Last active
January 13, 2020 08:34
-
-
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 и т.п.
Т.е. там должно быть по идее по пунктам:
1) Создать некий header (для ауентицикации в wsdl'е)
2) Создать XML запрос.
3) Подключить сертификат (напоминаю, в обычном браузере, при заходе на веб-сервис, необходимо лишь подтвердить согласие с данным сертификатом, т.е. тут не требуется никаких приватных ключей).
4) Отправить запрос именно на тот сервис, т.е. на интересующую меня функцию.
5) Получить и распарсить ответ (но главное пока что для меня получить).
Кроме 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 отправляется на сервер ЕГРП.
1 stunnel + CSP и слать запросы через него 2 вариант с КриптоПро JCP
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment