Форум КриптоПро
	 » 
	Общие вопросы
	 » 
	Общие вопросы
	 » 
	Как использовать СКЗИ Крипто-ПРО совместно с curl
	 
	
        
            
            
    
        
	Статус: Новичок
  Группы: Участники
 Зарегистрирован: 21.12.2014(UTC) Сообщений: 5 Откуда: Msk
  
	 
	
     | 
    
        
            
		      
                Вот такой скрипт: Код:<?php
$address = 'https://cryptopro.ru:5555/ui/';
$ch = curl_init($address);
$xml ='';
curl_setopt($ch, CURLOPT_URL, $address);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSLENGINE,'gost');
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_LOCAL_MACHINE');
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:MY');
//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_LOCAL_MACHINE:MY');
curl_setopt($ch, CURLOPT_SSLCERT, '0xba642ca84ba6c7b1ca9008a0899aaaa01c1d19a7');
if(isset($proxy)) curl_setopt($ch, CURLOPT_PROXY, $proxy);
$response = curl_exec($ch);
echo 'Error code: ' . curl_errno ($ch)."\n";
echo 'Curl error: ' . curl_error($ch)."\n";
?>
 
 выдает вот что: Цитата: # php inf.php Error code: 58 Curl error: Problem with the local SSL certificate
 
  Код:# ldd /usr/lib64/php/modules/curl.so
        linux-vdso.so.1 =>  (0x00007fff8f7fe000)
        libcurl.so.4 => //opt/cprocsp/lib/amd64/libcurl.so.4 (0x00007f48b33fa000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f48b3052000)
        libidn.so.11 => /lib64/libidn.so.11 (0x00007f48b2e20000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f48b2c18000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f48b2a01000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f48b27e4000)
        libcapi20.so.4 => //opt/cprocsp/lib/amd64/libcapi20.so.4 (0x00007f48b25cf000)
        libssp.so.4 => //opt/cprocsp/lib/amd64/libssp.so.4 (0x00007f48b244b000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f48b375b000)
        libcpext.so.4 => //opt/cprocsp/lib/amd64/libcpext.so.4 (0x00007f48b22e3000)
        libcapi10.so.4 => //opt/cprocsp/lib/amd64/libcapi10.so.4 (0x00007f48b21ce000)
        liburlretrieve.so.4 => //opt/cprocsp/lib/amd64/liburlretrieve.so.4 (0x00007f48b20ca000)
        librdrsup.so.4 => //opt/cprocsp/lib/amd64/librdrsup.so.4 (0x00007f48b1fa4000)
        libasn1data.so.4 => //opt/cprocsp/lib/amd64/libasn1data.so.4 (0x00007f48b1840000)
        libpkivalidator.so.4 => //opt/cprocsp/lib/amd64/libpkivalidator.so.4 (0x00007f48b1717000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f48b1513000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f48b120d000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f48b0f88000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f48b0d72000)
        libcpalloc.so.0 => //opt/cprocsp/lib/amd64/libcpalloc.so.0 (0x00007f48b0c71000)
        libjemalloc.so.0 => //opt/cprocsp/lib/amd64/libjemalloc.so.0 (0x00007f48b0b57000)
        libcplib.so.4 => //opt/cprocsp/lib/amd64/libcplib.so.4 (0x00007f48b0a47000)
        libocsp.so.4 => //opt/cprocsp/lib/amd64/libocsp.so.4 (0x00007f48b08f8000)
        libcpasn1.so.4 => //opt/cprocsp/lib/amd64/libcpasn1.so.4 (0x00007f48b077f000)
 
 Что я делаю не так?  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 22.09.2014(UTC) Сообщений: 16  Откуда: Fyljhhf Сказал(а) «Спасибо»: 1 раз
  
	 
	
     | 
    
        
            
		      
                Автор: Татьяна   В хранилище компьютера сертификат ставят почти так же:
  1. скопировать ключи в папку /var/opt/cprocsp/keys/ без логина пользователя
 
  Ещё момент: сейчас с одним сертификатом всё работает, то тестовый сертификат. Нынче нам вручили сертификат для продакшена, но и тестирование тоже всё ещё требуется. Список из шести ключей туда кладётся без всякой вложенности? Для тестового сертификата это было сделано так и всё работает. А если добавить туда продакшен-сертификат и нужно скопировать новые ключи, то они перезапишут старые? Как поместить в хранилище машины больше одного сертификата?  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 22.09.2014(UTC) Сообщений: 16  Откуда: Fyljhhf Сказал(а) «Спасибо»: 1 раз
  
	 
	
     | 
    
        
            
		      
                А если контейнер создавался с паролем, каким параметром нужно указывать пароль? CURLOPT_KEYPASSWD, CURLOPT_SSLCERTPASSWD, CURLOPT_SSLKEYPASSWD не подходят. Если запускать php скрипт руками, то пароль принимает, то есть в принципе всё рабочее. Просто не ясно где пароль указать. 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 22.09.2014(UTC) Сообщений: 16  Откуда: Fyljhhf Сказал(а) «Спасибо»: 1 раз
  
	 
	
     | 
    
        
            
		      
                Как я погляжу жизнь тут прям бурлит и сделать запрос курлом уже давно стало легко и просто. Ещё такой момент, почему после установки на новый сервер (FreeBSD 9.3-RELEASE-p5) при попытке сделать запрос курлом выдаётся ошибка: Код:>LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64 /usr/local/bin/php some_php_command.php
Segmentation fault: 11 
 Код:>LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64 ldd /usr/local/lib/php/20131226/curl.so 
/usr/local/lib/php/20131226/curl.so:
	libcurl.so.4 => /opt/cprocsp/lib/amd64/libcurl.so.4 (0x80063b000)
	libc.so.7 => /lib/libc.so.7 (0x80081b000)
	libz.so.5 => /usr/local/lib/compat/libz.so.5 (0x801215000)
	libssp.so.4 => /opt/cprocsp/lib/amd64/libssp.so.4 (0x80132a000)
	libcapi20.so.4 => /opt/cprocsp/lib/amd64/libcapi20.so.4 (0x8014ca000)
	liburlretrieve.so.4 => /opt/cprocsp/lib/amd64/liburlretrieve.so.4 (0x8016c9000)
	libasn1data.so.4 => /opt/cprocsp/lib/amd64/libasn1data.so.4 (0x8017ce000)
	libpkivalidator.so.4 => /opt/cprocsp/lib/amd64/libpkivalidator.so.4 (0x801eee000)
	libcplib.so.4 => /opt/cprocsp/lib/amd64/libcplib.so.4 (0x802017000)
	libocsp.so.4 => /opt/cprocsp/lib/amd64/libocsp.so.4 (0x802127000)
	libcpasn1.so.4 => /opt/cprocsp/lib/amd64/libcpasn1.so.4 (0x80226e000)
	libcpext.so.4 => /opt/cprocsp/lib/amd64/libcpext.so.4 (0x8023e3000)
	libcapi10.so.4 => /opt/cprocsp/lib/amd64/libcapi10.so.4 (0x80254c000)
	librdrsup.so.4 => /opt/cprocsp/lib/amd64/librdrsup.so.4 (0x802661000)
	libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x802787000)
	libcpalloc.so.0 => /opt/cprocsp/lib/amd64/libcpalloc.so.0 (0x802a83000)
	libjemalloc.so.0 => /opt/cprocsp/lib/amd64/libjemalloc.so.0 (0x802b84000)
	libthr.so.3 => /lib/libthr.so.3 (0x802c9c000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x802ebf000)
	libm.so.5 => /lib/libm.so.5 (0x8031c6000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x8033e7000) 
 /opt/cprocsp/lib/amd64/libcurl.so.4 это ссылка на библиотеку криптопро:  Цитата:libcurl.so.4 -> libcpcurl.so.6  Может есть какие дампы, логи, которые можно было прочесть и понять что не так? Нет ли планов вообще взять и модуль для пхп и прочих экосистем написать? Чтобы можно было сделать apt-get или yum install php5-cpcurl и потом по-человечески им пользоваться? Отредактировано пользователем 9 июля 2015 г. 7:17:10(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 22.09.2014(UTC) Сообщений: 16  Откуда: Fyljhhf Сказал(а) «Спасибо»: 1 раз
  
	 
	
     | 
    
        
            
		      
                А консольным курлом как пользоваться?  > ./curl  https://url.com --cert-type CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_LOCAL_MACHINE --cert fingerprint curl: (58) Problem with the local SSL certificate Это на той из машин где курл с подгрузкой нормально работает.  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,556
  Сказал(а) «Спасибо»: 44 раз Поблагодарили: 650 раз в 448 постах
  
	 
	
     | 
    
        
            
		      
                В консоли можно пользоваться нашим бинарником: Код:
/opt/cprocsp/bin/amd64/curl
 
 Проблема "Problem with the local SSL certificate" можно быть по трём причинам: 
 -  вы неверно указали sha1 hash сертификата. Узнать его можно с помощью certmgr:
 Код:
[root@test-x64-fb92 ~]# /opt/cprocsp/bin/amd64/certmgr -list -store umy -dn cln512b
Certmgr 1.0 (debug version) (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer              : DC=ru, DC=cp, CN=test-ca
Subject             : CN=cln512b, E=cln512b@cryptopro.ru
Serial              : 0x181FF11B0000004DBBB2
SHA1 Hash           : 0xdd55ac7b0472653453128cb93dfcb5c03a6650d5
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/07/2015  19:20:30 UTC
Not valid after     : 10/07/2025  02:00:30 UTC
PrivateKey Link     : Yes
Container           : HDIMAGE\\cln512b
Provider Name       : Crypto-Pro GOST R 34.10-2001 KC2 CSP
Provider Info       : ProvType: 75, KeySpec: 1, Flags: 0x0
Extended Key Usage  : 1.3.6.1.5.5.7.3.2
=============================================================================
 
  Надо отбросить 0x и команда будет:
 Код:
/opt/cprocsp/bin/amd64/curl https://ref-x86-xp:443/allow.htm --output /usr/rtests/data/allow.htm --cert dd55ac7b0472653453128cb93dfcb5c03a6650d5
 
 
  -  в указанном сертификате в хранилище неправильная ссылка на закрытый ключ, в предыдущем выводе это:
 Код:
PrivateKey Link     : Yes
Container           : HDIMAGE\\cln512b
Provider Name       : Crypto-Pro GOST R 34.10-2001 KC2 CSP
Provider Info       : ProvType: 75, KeySpec: 1, Flags: 0x0
 
  проверить правильность ссылки можно так:
 Код:
[root@test-x64-fb92 ~]# /opt/cprocsp/bin/amd64/cryptcp -sign -thumbprint dd55ac7b0472653453128cb93dfcb5c03a6650d5 /tmp/test.test
CryptCP 4.0 (Debug version) (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
Parameters: -sign -thumbprint dd55ac7b0472653453128cb93dfcb5c03a6650d5 /tmp/config.ini
The following certificate will be used:
RDN:cln512b@cryptopro.ru, cln512b
Valid from 09.07.2015 19:20:30 to 10.07.2025 02:00:30
Certificate chains are checked.
Folder '/tmp/':
/tmp/test.test... Signing the data...
Signed message is created.
[ErrorCode: 0x00000000]
 
 
  -  на контейнер ключа установлен пароль (тогда предыдущая команда - cryptcp может не сработать без указания -pin YOUR_PASS) и во флагах ссылки на закрытый (см. строку Provider Info) ключ стоит CRYPT_SILENT (0x00000040)
  -  сертификат не нравится curl-у. Можно попробовать воспользоваться ключом "--insecure". К чему он придирается, сходу не видно. Разберёмся.
  
 Поддержки PIN-ов в коде нашего curl-а пока нет. Добавим. Есть возможность сохранения PIN-ов в атрибуты ссылки на закрытый ключ, но у меня сходу это не заработало. Посмотрим.    | 
 | 
            
	 
        
    
    
        
              1 пользователь поблагодарил Русев Андрей за этот пост.  
     | 
    
        
            Hayate оставлено 10.07.2015(UTC)
          
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 18.02.2013(UTC) Сообщений: 33  Сказал(а) «Спасибо»: 6 раз Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Автор: olin  Поддержки PIN-ов в коде нашего curl-а пока нет. Добавим. Есть возможность сохранения PIN-ов в атрибуты ссылки на закрытый ключ, но у меня сходу это не заработало. Посмотрим.  Когда пларируется поддержка pin в curl? Сейчас пробую КриптоПро CSP 4.0 а воз и ны не там. Если -pin не задан то вываливает ввод пароля: Код:$ /opt/cprocsp/bin/amd64/cryptcp -sign -thumbprint 47f0891ef1fb85aa7bb40f97ccfcfbb3a118e749 /tmp/test.test
CryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
RDN:Тестовый НБКИ - 2014-15, 0101BB, ОАО Тестбанк, Город, Регион, RU, support@nbki.ru
Valid from 02.10.2014 13:01:00 to 02.01.2016 13:11:00
Certificate chains are checked.
Folder '/tmp/':
/tmp/test.test... Signing the data...100%CryptoPro CSP: Type password for container "TEST1415"
Password:
 
 причем даже если вводишь пароль правильно, КриптоПро его не принимает Отредактировано пользователем 16 сентября 2015 г. 23:57:13(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 729 раз в 630 постах
  
	 
	
     | 
    
        
            
		      
                Не работает запрос пин-кода в cryptcp? Какая ОС, какая версия CSP?    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 18.02.2013(UTC) Сообщений: 33  Сказал(а) «Спасибо»: 6 раз Поблагодарили: 1 раз в 1 постах
  
	 
	
     | 
    
        
            
		      
                Автор: maxdm  Не работает запрос пин-кода в cryptcp? Какая ОС, какая версия CSP?  Если -pin указать через ключ то все работает Код:$ /opt/cprocsp/bin/amd64/cryptcp -sign -thumbprint 47f0891ef1fb85aa7bb40f97ccfcfbb3a118e749 /tmp/test.test -pin 111
CryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
RDN:Тестовый НБКИ - 2014-15, 0101BB, ОАО Тестбанк, Город, Регион, RU, support@nbki.ru
Valid from 02.10.2014 13:01:00 to 02.01.2016 13:11:00
Certificate chains are checked.
Folder '/tmp/':
/tmp/test.test... Signing the data...    
    
Signed message is created.
[ReturnCode: 0] 
 Если пин не указывать вываливается интерактивный запрос пароля, который не работает: Код:$ /opt/cprocsp/bin/amd64/cryptcp -sign -thumbprint 47f0891ef1fb85aa7bb40f97ccfcfbb3a118e749 /tmp/test.test
CryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
RDN:Тестовый НБКИ - 2014-15, 0101BB, ОАО Тестбанк, Город, Регион, RU, support@nbki.ru
Valid from 02.10.2014 13:01:00 to 02.01.2016 13:11:00
Certificate chains are checked.
Folder '/tmp/':
/tmp/test.test... Signing the data...100%CryptoPro CSP: Type password for container "TEST1415"
Password:
Wrong pin, 2 tries left.
CryptoPro CSP: Type password for container "TEST1415"
Password:
Wrong pin, 1 tries left.
CryptoPro CSP: Type password for container "TEST1415"
Password:
    
Error: The card cannot be accessed because the wrong PIN was presented.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:366: 0x8010006B
[ErrorCode: 0x8010006b]
 
 Вариант указать -pin не предусмотрен в КриптоПРОшном курле как сказал ваш коллега постом выше: Код:$ /opt/cprocsp/bin/amd64/curl https://icrs.demo.nbki.ru/products/B2BRequestServlet --cert 47f0891ef1fb85aa7bb40f97ccfcfbb3a118e749 -pin 111
CryptoPro CSP: Type password for container "TEST1415"
Password:
Wrong pin, 2 tries left.
CryptoPro CSP: Type password for container "TEST1415"
Password:
Wrong pin, 1 tries left.
CryptoPro CSP: Type password for container "TEST1415"
Password:
 
 А интерактивно пароль ввести я никак не могу. ОС: CentOS 7.0 CSP: 4.0  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 729 раз в 630 постах
  
	 
	
     | 
    
         | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Общие вопросы
	 » 
	Общие вопросы
	 » 
	Как использовать СКЗИ Крипто-ПРО совместно с curl
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close