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

Уведомление

Icon
Error

4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
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
?
Offline Hayate  
#31 Оставлено : 21 ноября 2014 г. 14:29:42(UTC)
Hayate

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

Группы: Участники
Зарегистрирован: 22.09.2014(UTC)
Сообщений: 16
Андорра
Откуда: Fyljhhf

Сказал(а) «Спасибо»: 1 раз
Автор: NTMan Перейти к цитате
Автор: 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 и для апача будут свои ньюансы.


Решаю аналогичную задачу в Ubuntu 14.04.
До манипуляций ldd возвращает это:


Если я пытаюсь обратиться из консоли с помощью curl к сайту требующему сертификат, я получаю ошибку
Цитата:
curl: (35) error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm


LD_PRELOAD, если я им пользуюсь верно, не помог, выдаётся ошибка
Цитата:
ERROR: ld.so: object './opt/cprocsp/lib/amd64.libcpcurl.so.4.2.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

Из командного файла:
Цитата:

#!/bin/sh
................
LD_PRELOAD="./opt/cprocsp/lib/amd64.libcpcurl.so.4.2.0" curl -X POST -d ${REQUEST}

Попробовал задать LD_LIBRARY_PATH
Цитата:
LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64
export LD_LIBRARY_PATH


ldd стало выдавать вот это:


Но тогда curl начинает выдавать вот это:
Цитата:
curl: /opt/cprocsp/lib/amd64/libcurl.so.4: no version information available (required by curl)
curl: (2) Failed initialization


Что я делаю не так, сможет кто-нибудь помочь заставить это работать?

А если я использую curl в PHP, то выдаётс ошибка
Цитата:
Error code: 58
Curl error: not supported file type 'CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:MY' for certificate

Отредактировано пользователем 21 ноября 2014 г. 14:53:04(UTC)  | Причина: Не указана

Offline Hayate  
#32 Оставлено : 22 ноября 2014 г. 8:15:03(UTC)
Hayate

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

Группы: Участники
Зарегистрирован: 22.09.2014(UTC)
Сообщений: 16
Андорра
Откуда: Fyljhhf

Сказал(а) «Спасибо»: 1 раз
Оказалось, что это всё же консольный курл не работает.
Для PHP с правильно указанным отпечатком всё заработало.
Offline Hayate  
#33 Оставлено : 22 ноября 2014 г. 13:09:32(UTC)
Hayate

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

Группы: Участники
Зарегистрирован: 22.09.2014(UTC)
Сообщений: 16
Андорра
Откуда: Fyljhhf

Сказал(а) «Спасибо»: 1 раз
Автор: Hayate Перейти к цитате
Оказалось, что это всё же консольный курл не работает.
Для PHP с правильно указанным отпечатком всё заработало.


Ага, ещё момент. Это всё работает, если в консольке выполнить
Цитата:
LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64; export LD_LIBRARY_PATH;

Из-под юзера для которого всё крипто-добро было помещено в хранилище, и потом если от имени этого же юзера запускать из консоли скрипт.
Логичным образом, если скрипт запускает nginx, или если закрыть-открыть консоль, то всё это уже не работает.
Поэтому вопрос, как лучше поступить с сертификатами и ключами, поместить их в хранилище локальной машины?
Это тогда будет
Цитата:
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');

так, или я не верно понимаю?
Или как можно добавить сертификаты для пользователей от имени которых работают php и nginx? Их же в passwd нет, для них даже su не сделать. Да и нельзя su для них делать...

А по поводу крипто-про библиотеки, пересобирать php пока что кажется неоптимальным вариантом, отсюда вопрос, добавление в /etc/php5/fpm/pool.d/www.conf строки env[LD_LIBRARY_PATH] = /opt/cprocsp/lib/amd64 должно заставить php-fpm подхватить эту библиотеку?
Потому как
putenv("LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64");
и
shell_exec('LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64;env[LD_LIBRARY_PATH] = /opt/cprocsp/lib/amd64;'); не помогли.

Отредактировано пользователем 22 ноября 2014 г. 13:46:19(UTC)  | Причина: Не указана

Offline NewUser  
#34 Оставлено : 22 декабря 2014 г. 0:00:45(UTC)
NewUser

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

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

Господа, у кого получилось решить проблему?
Скрипт:
Код:
<?php

        if ($ch = curl_init ()) {
                curl_setopt_array ($ch, array (
                        CURLOPT_URL => 'https://ssl.***.ru',
                        //CURLOPT_PORT => 450,
                        CURLOPT_POSTFIELDS => array ('Type' => 'Login', 'Login' => '12', 'Password' => '12'),
                        CURLOPT_USERAGENT => "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)",
                        CURLOPT_POST => 1,
                        CURLOPT_RETURNTRANSFER => 1,
                        CURLOPT_CONNECTTIMEOUT => 30,
                        CURLOPT_SSL_VERIFYPEER => 0,
                        CURLOPT_SSLENGINE => 'gost',

                ));
                echo '<pre>error: '. curl_errno ($ch). ' "'. curl_error ($ch). '"';
                echo '<pre>'. curl_exec ($ch);
                curl_close ($ch);
        }
?>


Категорически не работает, просто https://ssl.***.ru не доступен для доступа пхпшного curl'a
Но коносольный curl достукивается до сайта.
Что нужно сделать, чтобы и скрипт стал работать??
ОС - Линукс
Offline Username123  
#35 Оставлено : 24 декабря 2014 г. 19:37:26(UTC)
Username123

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

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

Кто-нибудь решил проблему?
Offline Hayate  
#36 Оставлено : 26 декабря 2014 г. 8:46:07(UTC)
Hayate

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

Группы: Участники
Зарегистрирован: 22.09.2014(UTC)
Сообщений: 16
Андорра
Откуда: Fyljhhf

Сказал(а) «Спасибо»: 1 раз
У меня работает только в случае запуска php скрипта из консоли. По крону запускается скрипт и получает-отправляет нужные данные.
Заставить отработать curl в случае когда выполнение инициирует посетитель обратившись браузером не вышло, да особо и не стояло такой задачи.
Такой вариант тоже не работает?

Отредактировано пользователем 26 декабря 2014 г. 8:46:46(UTC)  | Причина: Не указана

Offline NewUser  
#37 Оставлено : 26 декабря 2014 г. 12:14:55(UTC)
NewUser

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

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

Ну это же костыли совсем =)

Из строки curl криптопрошный работает, но все-таки хотелось бы, чтобы работала libcurl в пхп скрипте
Offline Hayate  
#38 Оставлено : 26 декабря 2014 г. 12:19:34(UTC)
Hayate

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

Группы: Участники
Зарегистрирован: 22.09.2014(UTC)
Сообщений: 16
Андорра
Откуда: Fyljhhf

Сказал(а) «Спасибо»: 1 раз
Ну в моём случае у фреймворка есть функционал консольных команд, и обмен данными идёт долго, не комильфо заставлять юзера ждать. Поэтому мне так даже удобнее.
Offline NewUser  
#39 Оставлено : 26 декабря 2014 г. 12:22:23(UTC)
NewUser

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

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

В этом плане Вам повезло... а вот в нашем случае нужно, чтобы работы была в браузере непосредственно в форматье запрос-ответ пользователем.
Offline NewUser  
#40 Оставлено : 27 декабря 2014 г. 23:49:53(UTC)
NewUser

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

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

А техподдержка тут не бывает? Хотелось бы получить от Вас совет
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
4 Страницы<1234>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.