Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

8 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline NTMan  
#21 Оставлено : 15 марта 2013 г. 17:45:34(UTC)
NTMan

Статус: Активный участник

Группы: Участники
Зарегистрирован: 18.02.2013(UTC)
Сообщений: 33
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Автор: Татьяна Перейти к цитате

Я бы всё-таки рекомендовала использовать хранилища специального пользователя, если нужно всё делать под специальным пользователем.
В хранилище компьютера сертификат ставят почти так же:

1. скопировать ключи в папку /var/opt/cprocsp/keys/ без логина пользователя
2. потом узнать id контейнера /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc -machinekeys
3. затем добить сертификат в хранилище /opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\HDIMAGE\%id_контейнера%' -file ИМЯ_ФАЙЛА_СЕРТИФИКАТА.cer -store mmy
4. поставить crl сертификат
certmgr -inst -crl -store ca -file %путь_к_файлу%
5. затем поставить корневые сертификаты
certmgr -inst -store root -file cacer.p7b


Поясню откуда такое появилось желание. Речь идет о сервере на котором работает Web приложение. Само приложение находится в домашней папке пользователя, который является разработчиком или администратором прикладной системы. Web cервер включен в группу этого пользователя, чтобы запускать это приложение от своего имени. Далее, чтобы безопастникам не давать права разработчика/администратора, чтобы они не накосячили в системе, хочу дать отдельного пользователя из под которого они будут сами ставить/обновлять сертификаты. Было бы логично, если они ставили эти сертификаты в хранилище компьютера, чтобы ими могло пользоваться приложение. Именно поэтому есть желание идентифицировать сертификаты по email, чтобы процесс обновления сертификатов был прозрачен для системы. Т.е. сертификат истек у пользователя появилось сообщение при выполнении бизнес операции, что сертификат просрочен и далее техподдекржка не мучает разработчиков/админов, а передает эту проблему сразу в службу безопастности, которая самостоятельно без участия прикладного админа обновляет нужные сертификаты.

Если, то, что я хочу, можно реализовать красивее буду рад послушать. :)

Отредактировано пользователем 15 марта 2013 г. 17:49:10(UTC)  | Причина: Не указана

Offline Татьяна  
#22 Оставлено : 19 марта 2013 г. 12:01:56(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Про хранилища компьютера понятно. Да, тогда можно дать права на директории, о которых я говорила.

Автор: NTMan Перейти к цитате
Именно поэтому есть желание идентифицировать сертификаты по email, чтобы процесс обновления сертификатов был прозрачен для системы. Т.е. сертификат истек у пользователя появилось сообщение при выполнении бизнес операции, что сертификат просрочен и далее техподдекржка не мучает разработчиков/админов, а передает эту проблему сразу в службу безопастности, которая самостоятельно без участия прикладного админа обновляет нужные сертификаты.

Если, то, что я хочу, можно реализовать красивее буду рад послушать. :)


А что делать, если сертификатов с одним e-mail два(например, админы новый поставили, а старый не удалили)? Ругаться? Выбирать первый попавшийся? Выбирать более новый? Проверять у какого из сертификатов есть назначение "проверка подлинности клиента", которое необходимо для работы curl? Пытаться использовать одностороннюю аутентификацию? А если есть два пользователя с одинаковым ящиком (например, сотрудники тех поддержки, у которых указан общий ящик тех поддержки)? Для каждой информационной системы ответ свой, поэтому эта часть и перекладывается на разработчиков информационной системы.
Так как libcurl предоставляет C-шный интерфейс, мы предполагали что встраивание будет на C, там без труда с помощью нашего API можно получить из хранилища сертификат по любым интересным вам параметрам (например, выбрать все сертификаты с заданным e-mail, потом среди них выбрать сертификаты с назначением "проверка подлинности клиента", а потом выбрать среди них самый новый или выбрать сертификат по фамилии владельца и по назначению или любым другим нужным вам способом), а затем получить thumbprint данного сертификата.
Татьяна
ООО Крипто-Про
thanks 1 пользователь поблагодарил Татьяна за этот пост.
NTMan оставлено 20.03.2013(UTC)
Offline NTMan  
#23 Оставлено : 20 марта 2013 г. 12:43:54(UTC)
NTMan

Статус: Активный участник

Группы: Участники
Зарегистрирован: 18.02.2013(UTC)
Сообщений: 33
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Еще вопрос, а можно ли завести несколько контейнеров на одного пользователя. И как между контейнерами переключаться из curl?
Offline NTMan  
#24 Оставлено : 25 марта 2013 г. 9:56:33(UTC)
NTMan

Статус: Активный участник

Группы: Участники
Зарегистрирован: 18.02.2013(UTC)
Сообщений: 33
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Это нормально???


Код:
$ /opt/cprocsp/sbin/amd64/cpconfig -defprov -view_type
Listing Available Provider Types:
Provider type	Provider Type Name
_____________	_____________________________________
      75	Crypto-Pro GOST R 34.10-2001 KC1 CSP
$ /opt/cprocsp/sbin/amd64/cpconfig -defprov -setdef -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC1 CSP"
An error occurred in running the program.
/dailybuilds/CSPbuild/CSP/src/cpconfig_unix/defprov.cpp:87:Error setting the default provider name.

Error number 80090020 (2148073504).
Unknown error 18446744071562657824
Error code:-2146893792, Unknown error: 80090020.

Отредактировано пользователем 25 марта 2013 г. 9:57:36(UTC)  | Причина: Не указана

Offline NTMan  
#25 Оставлено : 3 апреля 2013 г. 15:33:06(UTC)
NTMan

Статус: Активный участник

Группы: Участники
Зарегистрирован: 18.02.2013(UTC)
Сообщений: 33
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Татьяна, вопрос о нескольких контейнерах для одного пользователя\машины до сих пор актуален. Не могли бы Вы ответить?
Offline mmk  
#26 Оставлено : 22 мая 2013 г. 21:29:27(UTC)
mmk

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.05.2013(UTC)
Сообщений: 3

Автор: NTMan Перейти к цитате

Если интерсно вот пример на PHP для включение в ваше SDK

Код:
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_POST, true);
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_CURRENT_USER:MY');
//curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_LOCAL_MACHINE:MY');
curl_setopt($ch, CURLOPT_SSLCERT, '53be6850031bf03bff056fd5215a46c07b2248d6');
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";


И это реально работает?? Вы передаете вместо сертификата его хэш, вместо типа сертификата - адрес контейнера, и ЭТО работает?

Уже несколько дней пытаюсь решить подобную задачу, и сертификат почему-то не принимается(указываю абсолютный путь к нему).
Ради интереса попробовал и ваш метод... Но сервер даже до сертификата не доходит - сразу на CERTTYPE ругается.

У кого-нибудь есть рабочий вариант отправки запроса cUrl'ом по TLS с использованием личного сертификата (на PHP)?

Отредактировано пользователем 22 мая 2013 г. 21:30:17(UTC)  | Причина: Не указана

Offline NTMan  
#27 Оставлено : 24 мая 2013 г. 17:48:04(UTC)
NTMan

Статус: Активный участник

Группы: Участники
Зарегистрирован: 18.02.2013(UTC)
Сообщений: 33
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Автор: mmk Перейти к цитате
Автор: NTMan Перейти к цитате
И это реально работает?? Вы передаете вместо сертификата его хэш, вместо типа сертификата - адрес контейнера, и ЭТО работает?


Ну если вы читали эту тему то видели, что мне Татьяна подсказала так сделать, а код рабочий.

PHP кстати правильно запускаете?
Offline mmk  
#28 Оставлено : 25 мая 2013 г. 11:27:58(UTC)
mmk

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.05.2013(UTC)
Сообщений: 3

Автор: NTMan Перейти к цитате
PHP кстати правильно запускаете?


Наверное нет..А как правильно? Через PHP вообще отказывается работать. Наверное из-за того, что используется стандартная версия cUrl.
А вот на C++, подключив curl, прилагаемый к КриптоПро CSP, коннект идет, даже без указания CERTTYPE.
Вы у себя заменили библиотеку? Не помешало вызовам cUrl для других серверов без аутентификации по сертификату?

Offline NTMan  
#29 Оставлено : 29 мая 2013 г. 10:41:45(UTC)
NTMan

Статус: Активный участник

Группы: Участники
Зарегистрирован: 18.02.2013(UTC)
Сообщений: 33
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Автор: mmk Перейти к цитате

Наверное нет..А как правильно?


Для CentOS 5.9:

Делаешь симлинк с курловской библиотеки идущей совместно с КриптоПРО чтобы имя было как у дистрибутивной либы
$ ln -s /opt/cprocsp/lib/amd64/libcpcurl.so.4.2.0 /opt/cprocsp/lib/amd64/libcurl.so.3

А сам php запускается с переопределением LD_LIBRARY_PATH
Например:
LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64 ./inter.php

Соответственно для php-fpm и для апача будут свои ньюансы.
Offline page0  
#30 Оставлено : 25 июня 2013 г. 19:06:06(UTC)
page0

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2013(UTC)
Сообщений: 11
Откуда: Россия

Автор: NTMan Перейти к цитате


Для CentOS 5.9:

Делаешь симлинк с курловской библиотеки идущей совместно с КриптоПРО чтобы имя было как у дистрибутивной либы
$ ln -s /opt/cprocsp/lib/amd64/libcpcurl.so.4.2.0 /opt/cprocsp/lib/amd64/libcurl.so.3

А сам php запускается с переопределением LD_LIBRARY_PATH
Например:
LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64 ./inter.php

Соответственно для php-fpm и для апача будут свои ньюансы.


NTMan,
как разобравшийся во всех этих радостях человек,
можете поделиться опытом?

В либах cprocsp библиотеки libcurl у меня нет, поэтому я сделал все возможные симлинки на библиотеку, которая у меня имелась
ln -s /usr/lib/libcurl.so.4.2.0 /opt/cprocsp/lib/amd64/libcurl.so.4.2.0

Следуя докам, зарегистрировал даже путь к имеющейся библиотеке
./cpconfig -ini \config\apppath -add string libcurl.so /usr/lib/libcurl.so.4.2.0

Все равно у меня не получается достучаться по https с использованием сертификатов,
даже используя ваш рабочий код:

$url = "https://icrs.nbki.ru/products/B2BRequestServlet";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
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_CURRENT_USER:MY');
curl_setopt($ch, CURLOPT_SSLCERT, '0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$responce = curl_exec($ch);


Какие подводные камни я мог упустить?

+ еще вопрос,
при правильно настроенном curl, получалось ли у вас делать запросы по https прямо через консоль:
curl https://icrs.nbki.ru/products/B2BRequestServlet
?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
8 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.