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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ethaniel  
#1 Оставлено : 21 октября 2015 г. 9:18:23(UTC)
ethaniel

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

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

alfabank.php.txt (4kb) загружен 152 раз(а). alfabank.php.txt (4kb) загружен 152 раз(а).Мне надо было подключиться к API Альфа Банка (Альфа Линк), который использует Крипто-Про, стандартными средствами Linux (openssl, curl, php).
Делюсь своим опытом:

Шаг 1. Сначала в Windows:

  1. Идем в Банк и от своего юридического лица запрашиваем возможность подключения услуги "Альфа Линк" (для 1С).
  2. Генерируем на специальном сайте альфабанка запрос на сертификат, отправляем запрос в банк.
  3. Банк возвращает подтвержденный сертификат, импортируем его в систему (Т.н. "Личные, Personal" сертификаты).
  4. Теперь нам надо экспортировать наш личный ключ в удобном нам формате. Здесь стоит особо отметить, что если сделать экспорт ключа напрямую через Крипто-Про, то он не прочтется OpenSSL. Поэтому экспорт нужно делать
    при помощи программки P12FromGostCSP.exe (скачивается Тут) - она экспортирует его в формате PKCS#12, подходящем линуксу.
  5. Получаем .pfx файл с личным ключом и работа в Windows закончена.


Шаг 2. В Линукс:

  1. Если ваш OpenSSL не настроен на стандарт GOST (а скорее всего не настроен), то в самое начало файла /etc/ssl/openssl.conf добавляем:
    Цитата:
    openssl_conf = openssl_def

    А в самый конец этого же файла:
    Цитата:
    [openssl_def]
    engines = engine_section

    [engine_section]
    gost = gost_section

    [gost_section]
    soft_load=1
    default_algorithms = ALL
    CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet


  2. Теперь можно спокойно сконвертировать наш .pfx ключ, полученный через P12FromGostCSP, в .pem ключ, который подходит для openssl:
    Цитата:
    openssl pkcs12 -in private.pfx -out private.pem -nodes -clcerts


  3. Далее, если сертификат, присланный в ответ банком (from_bank.cer), содержит нечитаемый бинарный код, то его тоже надо сконфертировать:
    Цитата:
    openssl x509 -inform der -in from_bank.cer -out from_bank.pem


  4. Теперь с сертификатом from_bank.pem и закрытым ключом private.pem можно подписывать любые документы:
    Цитата:
    openssl smime -sign -signer from_bank.pem -inkey private.pem -in request.xml -out request.xml.sign -outform pem


Шаг 3. curl и php.
Код для получения выписок Альфа Банка на php и openssl написан на коленке и прикреплен к этому посту.

Ссылки:
http://dzek.ru/blog/163.html
http://dunmaksim.blogspo...4/09/debian-openssl.html

Если кому понравилось мое решение, приходите к нам в SMS.RU пользоваться услугами СМС Рассылки.

Отредактировано пользователем 31 октября 2017 г. 15:58:39(UTC)  | Причина: Не указана

Offline VVSina  
#2 Оставлено : 2 июля 2016 г. 16:34:37(UTC)
VVSina

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

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

При использовании прикреплённого скрипта в исходном виде банк возвращает код ошибки 2.
Лечится путём добавления флага -binary в атрибуты вызова openssl.

P.S. openssl-1.0.2h

P.P.S. Огроменное спасибо автору!

Отредактировано пользователем 2 июля 2016 г. 16:35:44(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.