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

Уведомление

Icon
Error

8 Страницы«<23456>»
Опции
К последнему сообщению К первому непрочитанному
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 Лента
Пользователи, просматривающие эту тему
8 Страницы«<23456>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.