menu

Войти

Авторизация
Регистрация
Забыли свой пароль?
Войти как пользователь:

HTTPS по ГОСТ на Linux для SOAP Росреестра https://portal.rosreestr.ru:4433/cxf/External?wsdl

Поиск  Пользователи  Правила  Войти
Форум ЕГРН клуба » Клуб разработчиков ПО для взаимодействия с ЕГРН » Регистрация права и кадастровый учет онлайн
Страницы: 1
Ответить
RSS
HTTPS по ГОСТ на Linux для SOAP Росреестра https://portal.rosreestr.ru:4433/cxf/External?wsdl, Отправка из PHP через CURL от криптоПРО из под Centos 7
 
Начнем конечно с установки CURL от крипто про в том числе и самого криптопровайдера. Речь о четвертой версии, заходим под root
Код
su 
устанавливаем предварительно распоковав архив и перейдя в каталог
Код
sudo ./install.sh
Переходим в каталог
Код
cd /opt/cprocsp/sbin/amd64
проверяем лицензию
Код
./cpconfig -license -view
устанавливаем лицензию
Код
./cpconfig -license -set 4040M-L0000-01XRC-HGU5E-XYU
выходим из root
Код
exit
Переходим в каталог утилиты (Остальные действия делаются от пользователя состоящего в SUDO!!!!)
Код
sudo cd /opt/cprocsp/bin/amd64
Получаем список ключевых контейнеров (предварительно вставив флешку с ключом)
Код
sudo ./csptest -keyset -enum_cont -fqcn -verifyc 
копируем закрытый ключь на комп
Код
sudo ./csptest -keycopy -contsrc '\\.\FLASH\ryab16-17' -contdest '\\.\HDIMAGE\ryb16_17' 
устанавливаем из ключевого контейнера личный сертификат
Код
sudo ./certmgr -inst -cont '\\.\HDIMAGE\ryb16_17' 
проверяем личный сертификат
Код
sudo ./certmgr -list -store uMy 
При успешных операциях, можно попробовать соединится с Росреетром, от этого же пользователя с sudo
Код
sudo /opt/cprocsp/bin/amd64 $ ./curl --cert 5189e5b3a2a9846aa4e77f82d7b4be40471ecab5  --insecure https://portal.rosreestr.ru:4433/

curl запросит у Вас пароль и должен успешно прийти ответ от сервера росреестра.
далее создаем файл конфигурации (в моем случае /home/alex/curl_cripto_gost.config):
Код
# coment
url = "https://portal.rosreestr.ru:4433/cxf/External?wsdl"
cert = "5189e5b3a2a9846aa4e77f82d7b4be40471ecab5:ПАРОЛЬ"
insecure
data = "@/home/alex/in.xml"

data = "@/home/alex/in.xml" - путь к файлу с вашем SOAP запросом к Росреестру, заранее приготовьте тестовый запрос. Пример запроса лежит в вложении.
Теперь основная заморочка, сделать так, чтобы PHP не знало пароля от ключа и не могло воспользоваться крипто про с нашим ключом (ведь разработчики на PHP не всегда доверенные лица). PHP у нас работает от пользователя bitrix не состоящего в SUDO, а сертификат пользователя установлен от пользователя alex состоящего в sudo от имени которого мы и действовали ранее. Для такого разделения создадим bash скрипт с заданными заранее правами запуска от имени bitrix (чтобы запустить из PHP), сам скрипт будет запускать curl от имени alex с привилегиями sudo. Содержимое скрипта:
Код
# !/bin/bash
sudo /opt/cprocsp/bin/amd64/curl --config /home/alex/curl_cripto_gost.config
в etc/sudoers дописаны следующие права:
Код
bitrix    ALL=(alex) NOPASSWD: /home/alex/cript_rr.h 
alex    ALL= NOPASSWD: /home/alex/cript_rr.h 
alex    ALL= NOPASSWD: /opt/cprocsp/bin/amd64/curl
Теперь из PHP можно запустить скрипт и получить ответ Росреестра, при этом PHP более ни каких операций с ключами не сможет сделать:
Код
shell_exec('sudo -u alex /home/alex/cript_rr.h');
теперь остается видоизменить /home/alex/curl_cripto_gost.config до:
Код
# coment
url = "https://portal.rosreestr.ru:4433/cxf/External?wsdl"
cert = "5189e5b3a2a9846aa4e77f82d7b4be40471ecab5:ПАРОЛЬ"
insecure
и скрипт до:
Код
# !/bin/bash
sudo /opt/cprocsp/bin/amd64/curl --config /home/alex/curl_cripto_gost.config --data $1
то можно передавать в скрипт файл с SOAP запросом в Росреестр как параметр через PHP, вот так:
Код
echo shell_exec('sudo -u alex /home/alex/cript_rr.h "@/home/alex/in.xml"');
Всем удачи, жду комментариев от спецов, как улучшить взаимодействие.
 
В последних релизах крипто про копировать ключ надо с указанием типа контейнера, примерно так:
Код
./csptest -keycopy -contsrc '\\.\FLASH\_13_02_2019' -typesrc 75 -contdest '\\.\HDIMAGE\_02_2019'
где -typesrc 75 тип контейнера (описание по этой ссылке https://www.cryptopro.ru/forum2/defaul...s&t=14043
 
Спасибо за инструкцию. Почему то перестало соединяться с новой ЭЦП с гостом 2012, кто столкнулся с тем же? как решили ситуацию
 
У меня с 01.01.2019 перестал скрипт работать, запустив из консоли вручную я увидел, что крипто про спрашивает подтверждения работы по старому ГОСТ в 2019 году, согласившись больше проблем не было. На ГОСТ 2012 не переходил, подробностей не знаю, возможно и не узнаю с переходом на ФГИС ЕГРН
 
Подключаемся вот с такой ЭЦП, как видно ГОСТ 2012 года:

Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before : 04/04/2019 02:42:45 UTC
Not valid after : 04/04/2020 02:52:45 UTC
PrivateKey Link : Yes
Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0

При подключении к Росреестру появляется следующая ошибка:

* About to connect() to portal.rosreestr.ru port 4433 (#0)
* Trying 217.77.104.130... connected
* Connected to portal.rosreestr.ru (217.77.104.130) port 4433 (#0)
* Closing connection #0
* Problem with the local SSL certificate
curl: (58) Problem with the local SSL certificate

У кого какие мысли? Где что можно покрутить?
Есть мнение что нужно ждать когда Росреестр поменяет сертификат на сервере
 
Цитата
Guest написал:
Есть мнение что нужно ждать когда Росреестр поменяет сертификат на сервере
На всякий случай проверьте всю цепочку сертификации до ГУЦ. Я бы написал запрос в Росреестр, но думаю, поддержку данного веб сервиса постепенно сворачивают, информация не достоверна, личное впечталение.
 
http://forum-rosreestr.ru/messages/forum27/topic585/message11955/
Страницы: 1
Ответить
Читают тему
Форма ответов
 
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить файлы
Отправить Отменить