Skip to content

Instantly share code, notes, and snippets.

@Barolina
Last active January 13, 2020 08:34
Show Gist options
  • Save Barolina/bf3f65880d965462ca5e8d2abb173502 to your computer and use it in GitHub Desktop.
Save Barolina/bf3f65880d965462ca5e8d2abb173502 to your computer and use it in GitHub Desktop.

авторизация по сертификату

1)На сервере создаётся табличка с 2-мя полями - логин и отпечаток сертификата
2)В эту табличку заносится логин vasya и отпечаток, например, AB445DDDDDDDDDDD
3)Пользователь на клиенте (в браузере) подписывает какие-либо данные, например "hello world"
4)Потом эти подписанные данные отправляются на сервер через POST-запрос
5)Сервер, приняв эти данные, проверят подпись. После проверки доступны данные сертификата. Берём отпечаток сертификата.
Пробегаемся по табличке и ищем совпадение. Если нашлось, то авторизуем пользователя.

проброс шифрования

    если вы средствами php организуете soap, то OpenSSL 1 на сервере решит вашу проблему (если проверка сертификата клиента будет производиться только по DN)
    если понадобится проверка по OID в EKU - пользуйте TrustedTLS - там лучше в сторону проксирующего сервера смотрите (меньше проблем)
    клиента и сервер SOAP на php - не сложно написать и в нете есть примеры
    при обращении к wsdl не потребуется сертификат - если на сервере настроили построение безоп.канала только по конкретному пути.. если при обращении на директорию у вас настроено построение канала, то все, что лежит в данной директории - будет с предварительной постройкой канала. 

подпись файлов

    Имеется несколько вопросов по подписи хеша pdf-файла.
    На текущий момент реализована подпись pdf-файла с помощью iTextSharp и Browser plug-in:
    1) Приложение на C# создает pdf-файл;
    2) С помощью iTextSharp внедряется контейнер с пустой подписью и вычисляется хеш по алгоритму GOST3411;
    3) С помощью Browser plug-in выполняется вычисление подписи на основании полученного хеша, записанного в виде строки шестнадцатеричных чисел;
    4) С помощью iTextSharp в контейнер с пустой подписью внедряется вычисленная подпись.
Вся соль в том, что надо использовать подпись в формате CAdES-X Long Type 1, и российские ГОСТ Р 34.10-2001, ГОСТ Р 34.10-2012 и т.п. 

хз про подпись soap

    Т.е. там должно быть по идее по пунктам:
    1) Создать некий header (для ауентицикации в wsdl'е)
    2) Создать XML запрос.
    3) Подключить сертификат (напоминаю, в обычном браузере, при заходе на веб-сервис, необходимо лишь подтвердить согласие с данным сертификатом, т.е. тут не требуется никаких приватных ключей).
    4) Отправить запрос именно на тот сервис, т.е. на интересующую меня функцию.
    5) Получить и распарсить ответ (но главное пока что для меня получить).

WS_Security

    Кроме UsernameTokens, в WS-Security также определен элемент BinarySecurityToken, предназначенный для сохранения пары хорошо известных типов маркеров, имеющих собственные форматы. Спецификация определяет типы BinarySecurityToken для X.509 v3 сертификатов и Kerberos v5 tickets. WSE поддерживает X.509 сертификаты, и вы обнаружите, что в большинстве случаев они интерпретируются так же как и UsernameToken.

Для прямого взаимодействия

1 необхощдимо настройить двустороннию футентификацию по протоколу TLS, алгоритм шифрование ГОСТ2012 (защищенное соедимнеие на траспортном уровне )

2 что знать

https://www.gosuslugi.ru/pgu/eds

последовательность действия для прямого взаимодействия с росреестром

на создание заявки

a.	Формируется XML с данным заявки и от этого XML-файла формируется .sig-файл, который является цифровой подписью PKCS #7 (detached).
b.	XML и подпись .sig добавляются в архив.zip. 
c.	Архив преобразуется формат Base64.
d.	Создаётся SOAP.
e.	Архив в форме Base64 добавляется в SOAP.
f.	SOAP подписывается по стандарту ГОСТ-34.11-2001.
g.	SOAP отправляется на сервер ЕГРП.

на полученеи списка заявок

b.	Формируется SOAP в который добавляется номер зарегистрированной заявки.
c.	SOAP подписывается по стандарту ГОСТ-34.11-2001.
d.	SOAP отправляется на сервер ЕГРП.

solution

1 stunnel + CSP и слать запросы через него 2 вариант с КриптоПро JCP

описание решения со смэв росреестр ЧУВАКОМ ! !!!!!

из той же серии

3 soap python на django

DOCS:

http://ит-решения.рф/blog/%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%8B%D0%B9-%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80-%D1%81%D0%BC%D1%8D%D0%B2-3-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0/

Scheme

изображение изображение изображение

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment