Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Как использовать СКЗИ Крипто-ПРО совместно с 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,271
Сказал(а) «Спасибо»: 22 раз Поблагодарили: 446 раз в 325 постах
|
В консоли можно пользоваться нашим бинарником: Код:
/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,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Не работает запрос пин-кода в 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,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
|
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Как использовать СКЗИ Крипто-ПРО совместно с curl
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close