криптопро stunnel сертификат

криптопро stunnel сертификат Электронная цифровая подпись

Перейти к содержанию

Заказать настройку интеграции 1с с ГИИС ДМДК

При настройке интеграции stunnel с ГИИС ДМДК у некоторых пользователей не проходит связь с сайтом и в логе stunnel выдается ошибка:

Решается такая ошибка достаточно просто. А возникает из за того, что при настройке интеграции, вы забыли поместить сертификат усиленной квалифицированной электронной подписи в хранилище «Личное». Что бы устранить эту ошибку, откройте КриптоПро, на вкладке «Сервис» выберите пункт меню «Просмотреть сертификаты в контейнере»

криптопро сертификаты в контейнере

Затем нажмите кнопку «Обзор» и из списка сертификатов выберите нужный и нажмите кнопку «ок»

просмотр сертификатов в контейнере

выбор сертификата криптопро

В открывшемся окне просмотра сертификата, нажмите «Установить»

установка сертификата

Перезапустите службу stunnel и проверьте связь, если все сделали правильно, все должно заработать!

Администратор

«Админы делятся на тех, кто не делает бэкапы, и тех, кто уже делает». Народная мудрость.

Заказать настройку интеграции 1с с ГИИС ДМДК

Настройка рабочего места

Для настройки интеграции 1с с сервисом ГИИС ДМДК, потребуется:

Обратите внимание, stunnel.x86 — будет работать и на 32 битной и на 64 битной ОС. stunnel.x64 — только на 64 битных системах.

2. Создайте папку на диске C:\ под названием stunnel и скопируйте туда скачанный файл stunnel.x86.exe или stunnel.x64.exe.

3. Запустите командную строку от имени администратора и перейдите в каталог stunnel, выполнив команду cd c:\stunnel.

4. Введите команду установки службы туннеля: c:\stunnel\stunnel.x64 -install для 64 биных ОС, или c:\stunnel\stunnel.x86 -install для 32 битных систем.

Вместо порта 1500, можно использовать любой другой свободный порт. В параметре connect — указывается IP адрес интеграционного сервиса, где:

  • 195.209.130.9 — для промышленного контура;
  • 195.209.130.19 — для тестового контура.
  • Скачать: http://testca2012.cryptopro.ru/cert/rootca.cer и установить корневой сертификат тестового Удостоверяющего центра в хранилище «Доверенные корневые центры сертификации»;
  • хранилище «Доверенные корневые центры сертификации»;

7. Создайте нового пользователя Windows.

8. В сеансе нового пользователя установите (пользовательский) сертификат, выпущенный на информационную систему Участника, в хранилище «Личное».

9. Откройте КриптоПро CSP, выберите вкладку «Сервис», нажмите кнопку «Протестировать», далее кнопку «По сертификату» и выберите личный сертификат. В открывшемся окне введите текущий пароль, обязательно поставив галочку «Сохранить пароль в системе» и нажмите «OK».

10. Откройте диспетчер сертификатов, выполнив команду certmgr.msc. Найдите и откройте личный сертификат, выберите вкладку «Состав», и нажмите кнопку «Копировать в файл». В открывшемся Мастере экспорта, необходимо экспортировать сертификат без закрытого ключа в формате Х.509 (.CER) в кодировке DER и сохранить его с именем clicer.cer в каталоге c:\stunnel.

11. Откройте Службы, выполнив команду services.msc. Выберите службу Stunnel Service и установите для неё тип запуска «Автоматически», на вкладке вход в систему с учетной записью созданного пользователя и запустите службу.

На этом настройка завершена, что бы проверить настройку интеграционного сервиса, перейдите в браузере по адресу: 127.0.0.1:1500 и если все настроено правильно, появится логотип ГИИС ДМДК.

Администратор

«Админы делятся на тех, кто не делает бэкапы, и тех, кто уже делает». Народная мудрость.


Offline

ioryk

Оставлено
:

6 августа 2021 г. 12:06:39(UTC)

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюкриптопро stunnel сертификат stunnel.png (19kb) загружен 6 раз(а).криптопро stunnel сертификат stunnel.log (160kb) загружен 1 раз(а).криптопро stunnel сертификат Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи


Offline

Александр Лавник

Оставлено
:

6 августа 2021 г. 12:11:26(UTC)

Автор: ioryk Перейти к цитате

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюкриптопро stunnel сертификат stunnel.png (19kb) загружен 6 раз(а).криптопро stunnel сертификат stunnel.log (160kb) загружен 1 раз(а).криптопро stunnel сертификат Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи

Здравствуйте.

Параметр cert – путь к файлу используемого сертификата в DER-кодировке.


Offline

ioryk

Оставлено
:

6 августа 2021 г. 14:54:32(UTC)

а если указан fingerprint сертификата который находится в хранилище, кодировка же не должна иметь значения?
Или нужно именно путь к файлу в DER кодировке указывать?


Offline

ioryk

Оставлено
:

6 августа 2021 г. 15:00:35(UTC)

Автор: Александр Лавник Перейти к цитате

Автор: ioryk Перейти к цитате

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюкриптопро stunnel сертификат stunnel.png (19kb) загружен 6 раз(а).криптопро stunnel сертификат stunnel.log (160kb) загружен 1 раз(а).криптопро stunnel сертификат Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи

Здравствуйте.

Параметр cert – путь к файлу используемого сертификата в DER-кодировке.

Не помогло

bad file format
есть ещё варианты?


Offline

Александр Лавник

Оставлено
:

9 августа 2021 г. 10:44:57(UTC)

Автор: ioryk Перейти к цитате

Автор: Александр Лавник Перейти к цитате

Автор: ioryk Перейти к цитате

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюкриптопро stunnel сертификат stunnel.png (19kb) загружен 6 раз(а).криптопро stunnel сертификат stunnel.log (160kb) загружен 1 раз(а).криптопро stunnel сертификат Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи

Здравствуйте.

Параметр cert – путь к файлу используемого сертификата в DER-кодировке.

Не помогло

bad file format
есть ещё варианты?

Здравствуйте.

Приложите лог stunnel после перезапуска stunnel и попытки отправки запроса.


Offline

ioryk

Оставлено
:

9 августа 2021 г. 16:25:41(UTC)

Проблема решена
Загвостка была в том что необходима полная цепочка в указываемом файле с клиентским ключом


Offline

Dees7

Оставлено
:

7 апреля 2022 г. 14:56:18(UTC)

Добрый день.
Не пойму куда копать.

Все работает, но с 10 раза.
В дампе вижу что после открытия tcp коннета, Stunnel замирает на 60 сек, после чего ему прилетает FIN, который Stunnel подтверждает. Свой он не закрывает и висит с полузакрытым.
Ждет еще минуту и начинает SSL сессию, тут же одумывается что ему закрыли коннект, и шлет ресет.
криптопро stunnel сертификат Screenshot_2022-04-07_16-50-05.png (57kb) загружен 7 раз(а).

1 из 10 коннектов проходит нормально, без задержек.
криптопро stunnel сертификат Screenshot_2022-04-07_16-53-58.png (73kb) загружен 6 раз(а).

Чем вызваны такие зависания?

gisgkh.conf

Лог

Отредактировано пользователем 8 апреля 2022 г. 7:30:52(UTC)
| Причина: Не указана


Offline

Максим Коллегин

Оставлено
:

7 апреля 2022 г. 15:19:11(UTC)

Возможно проблемы связаны с ограниченной доступностью CRL ГУЦ.


Offline

Андрей Русев

Оставлено
:

7 апреля 2022 г. 19:46:47(UTC)

Проблема в том, что при обращении за CRL-ем ГУЦ-а по этому адресу соединение ждёт открытия (а не устанавливается или получает сразу отлуп):

Код:

root@mini-docker-23:~# time -p /opt/cprocsp/bin/amd64/curl -m 5 -o /dev/null http://rostelecom.ru/cdp/guc2022.crl
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0
curl: (28) Connection timed out after 5000 milliseconds
real 5.00
user 0.00
sys 0.00

Такое будет при любой проверке цепочки, например, сертификат Казначейства (который был промежуточным в вашем случае):

Код:

root@mini-docker-23:~# time -p /opt/cprocsp/bin/amd64/certmgr -list -chain -store uca -thumb 0b48b8d07d142a5b45e9b0e8c52186687d75e58e -v
Certmgr 1.1 (c) "Crypto-Pro", 2007-2021.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer              : E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, ОГРН=1047702026701, ИНН ЮЛ=7710474375, CN=Минцифры России
Subject             : E=uc_fk@roskazna.ru, S=77 Москва, ИНН ЮЛ=7710568760, ОГРН=1047797019830, STREET="Большой Златоустинский переулок, д. 6, строение 1", L=г. Москва, C=RU, O=Казначейство России, CN=Казначейство России
Serial              : 0x00CFE8FF610000000005F6
SHA1 Thumbprint     : 0b48b8d07d142a5b45e9b0e8c52186687d75e58e
SubjKeyID           : 1d8026d28962e704818f1e4ae8ab7292762ddd3d
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Public key          : 04 40 b6 2b 57 a2 37 bd fc a2 61 41 2a 0f 5f 03
                      38 05 1d 6d ae ec 03 65 b2 75 61 f8 a2 b8 ea 94
                      a2 27 a6 29 0b 1c e9 de c4 e2 9f 26 d2 69 40 5e
                      39 f3 d5 55 fe da 5e 8e d3 5c 84 eb cb 2c 9f 6c
                      e5 7e
Not valid before    : 10/01/2022 10:54:46 UTC
Not valid after     : 10/01/2037 10:54:46 UTC
PrivateKey Link     : No
Identification Kind : Without personal presence by qualified signature
CA cert URL         : http://reestr-pki.ru/cdp/guc2022.crt
CDP                 : http://reestr-pki.ru/cdp/guc2022.crl
CDP                 : http://company.rt.ru/cdp/guc2022.crl
CDP                 : http://rostelecom.ru/cdp/guc2022.crl
Certificate chain   : Verified successfully.
#0:
  Issuer            : Минцифры России
  Subject           : Минцифры России
  Not valid before  : 08/01/2022 13:32:39 UTC
  Not valid after   : 08/01/2040 13:32:39 UTC
  SHA1 Thumbprint   : 2f0cb09be3550ef17ec4f29c90abd18bfcaad63a
#1:
  Subject           : Казначейство России
  Not valid before  : 10/01/2022 10:54:46 UTC
  Not valid after   : 10/01/2037 10:54:46 UTC
  SHA1 Thumbprint   : 0b48b8d07d142a5b45e9b0e8c52186687d75e58e
=============================================================================

[ErrorCode: 0x00000000]
real 15,01
user 0,00
sys 0,00

Коллегам из Ростелека передал, но не факт, что это поможет.

Отредактировано пользователем 7 апреля 2022 г. 19:47:59(UTC)
| Причина: Не указана


Offline

Dees7

Оставлено
:

8 апреля 2022 г. 6:59:50(UTC)

Автор: Андрей Русев Перейти к цитате

Проблема в том, что при обращении за CRL-ем ГУЦ-а по этому адресу соединение ждёт открытия

Спаисбо за наводку.
ГУЦ импортировал, но не помогло.
А дело было действительно в списке отзывов. но в другом (нашел в дампе куда еще ломится).

Все работает без ошибок. Еще раз спасибо.

Отредактировано пользователем 8 апреля 2022 г. 8:27:35(UTC)
| Причина: Не указана


Offline

HappyDragone

Оставлено
:

26 января 2022 г. 9:36:20(UTC)

1. Настраиваю получение метки времени в службе штампов времени АУЦ Банка России. Win 10 домашняя. На Win 10 Stunnel устанавливается как служба. Создан конф файл. Подписываю в КриптоАРМ 5, где указан адрес службы TSP. Не подписывает, вылетает ошибка

Описание ошибки в КриптоАРМ:
——————————————————————————-
Статус завершения операции: Неудача.
Длительность выполнения операции: 0:00:08.67
Входной файл: D:\10\UpdInfo.txt
Выходной файл: C:\Users\Serge\AppData\Local\Temp\~UpdInfo.txt.sig
Описание ошибки:
Ошибка сохранения сообщения (0x80004005)

Ошибка сохранения сообщения (0x80004005)

Произошла ошибка при создании подписи

Невозможно получить штамп времени.

Ошибка отправки запроса на штамп времени.

При попытке отправки запроса возникла ошибка HTTP (0xc2100100) (0x80004005)


Рекомендации УЦ после моего обращения по ошибке таковы:

Для того чтобы исправить данную ошибку, необходимо установить личный сертификат с привязкой к контейнеру, промежуточный сертификат Банка России и головной корневой сертификат Минком связи в хранилище «Сертификаты (локальный компьютер)» согласно инструкции по доступу к сервисам службы меток доверенного времени размещенной по ссылке http://cbr.ru/certificat…toveryayuschego_centra/.

Вероятнее всего у Вас сейчас сертификаты установлены в хранилище – «сертификаты – текущий пользователь».

Корневые-промежуточные установил в Локальный компьютер, а вот личный сертификат туда никак не ставится.

И ошибка не уходит.

Использую Крипто Про CSP 4.0.9944

Пожалуйста, подскажите, как настроить это? Может быть, кто-то сталкивался с настройкой получения метки времени на подпись через stunnel для взаимодействия со службой меток времени на подпись АУЦ Банка России.

2. Решил попробовать настроить на другом ПК с Win7 домашняя базовая. При попытке выполнить команду stunnel.exe – install в командной строке от имени Администратора вываливается:

Startservicectrldispatcher being called. this may take several seconds. please wait.

Как служба stunnel не появляется в оснастке “Службы”. Т.е. и здесь не судьба.

А настраивать придется все-таки в Win7, в офисе везде лицензионные Win7 установлены.

Пожалуйста, помогите. Что я делаю не так ?!

Вдруг кто-то уже сталкивался с настройкой и удачным результатом получения метки времени на подпись в АУЦ Банка России.

Если уж на Win 7 не получится, то хоть на Win 10, ибо есть одна машинка в офисе на Win 10 (не домашняя)


Offline

Санчир Момолдаев

Оставлено
:

28 января 2022 г. 9:09:42(UTC)

Добрый день!

согласно документации:
0xC2100100 При попытке отправки запроса возникла ошибка HTTP

какой адрес тсп указываете?

есть ли прокси?
если да необходимо настраивать согласно руководству tsp и ocsp


Offline

two_oceans

Оставлено
:

28 января 2022 г. 11:10:51(UTC)

Вообще, если работаете на Win10, желательно бы обновиться хотя бы на последнюю сертифицированную 4.0.9963 (если лицензии на 5.0 нет), либо на 5.0 R2 или новее. Суть в тои, что Десятка постоянно меняется и если у Вас не замороженная версия Десятки давности несколько лет, то не все будет гладко работать с 9944.

Цитата:

Корневые-промежуточные установил в Локальный компьютер, а вот личный сертификат туда никак не ставится.

Для этого нужно панель управления КриптоПро запустить с правами администратора (в 4 версии на первой вкладке общие соответствующая ссылка). Сработает если у пользователя есть права администратора (ну если с корневыми вышло, то полагаю есть).

Как обычно на вкладке “Сервис” нажимаете одну из кнопок “Просмотреть сертификаты в контейнере” либо “Установить личный сертификат”. Далее в мастере находите переключатель “введенное имя задает ключевой контейнер” выбираете “компьютера”. Если был просмотр сертификатов, то нажимаете “Установить” на последнем шаге.

Это должно установить сертификат в “Личные” локального компьютера. Тонкий момент разве что в том, что если хотите использовать реестр, то контейнер в реестре пользователя не видно в режиме компьютера, поэтому возможно потребуется сначала скопировать на флэшку (она видна в обоих режимах), потом обратно в реестр уже компьютера.

Цитата:

2. Решил попробовать настроить на другом ПК с Win7 домашняя базовая. При попытке выполнить команду stunnel.exe – install в командной строке от имени Администратора вываливается:

Пробел там не лишний между – и install? Это конечно самый простой способ создать службу, но не единственный. Также можно использовать другие способы: программку instserv (идет в комплекте у многих драйверов и программ), системную команду sc create (навскидку, у меня на Семерке создается практически одинаковый куст реестра с тем что создает сам stunnel)

Код:

sc create Stunnel binpath= "D:\Programs\Stunnel\stunnel.exe" DisplayName= "Stunnel Service"

либо добавление файла реестра экспортированного с одного компьютера импортом на другой. В случае файла реестра потребуется перезагрузка.

Ах да, не забывайте про разрядность системы.

Отредактировано пользователем 28 января 2022 г. 11:15:24(UTC)
| Причина: Не указана


Offline

octsha94

Оставлено
:

13 января 2022 г. 13:10:56(UTC)

Здравствуйте!
У меня stunnel 5.60.
При попытке соединения получаю ошибку:

2022.01.13 13:02:21 LOG6[0]: msspi: try open cert = “‎‎‎‎‎‎clicer.cer” as file
2022.01.13 13:02:21 LOG3[0]: msspi: add_mycert failed: “can not open file” (cert = “‎‎‎‎‎‎clicer.cer”)

Запускаю stunnel, как приложение. Файл ‎‎‎‎‎‎clicer.cer лежит в том же каталоге, что и stunnel_msspi.


Offline

Александр Лавник

Оставлено
:

13 января 2022 г. 17:22:47(UTC)

Автор: octsha94 Перейти к цитате

Здравствуйте!
У меня stunnel 5.60.
При попытке соединения получаю ошибку:

2022.01.13 13:02:21 LOG6[0]: msspi: try open cert = “‎‎‎‎‎‎clicer.cer” as file
2022.01.13 13:02:21 LOG3[0]: msspi: add_mycert failed: “can not open file” (cert = “‎‎‎‎‎‎clicer.cer”)

Запускаю stunnel, как приложение. Файл ‎‎‎‎‎‎clicer.cer лежит в том же каталоге, что и stunnel_msspi.

Здравствуйте.

Похоже, всё-таки файла с таким именем нет в соответствующем каталоге.


Offline

octsha94

Оставлено
:

13 января 2022 г. 18:04:16(UTC)

Автор: Александр Лавник Перейти к цитате

Автор: octsha94 Перейти к цитате

Здравствуйте!
У меня stunnel 5.60.
При попытке соединения получаю ошибку:

2022.01.13 13:02:21 LOG6[0]: msspi: try open cert = “‎‎‎‎‎‎clicer.cer” as file
2022.01.13 13:02:21 LOG3[0]: msspi: add_mycert failed: “can not open file” (cert = “‎‎‎‎‎‎clicer.cer”)

Запускаю stunnel, как приложение. Файл ‎‎‎‎‎‎clicer.cer лежит в том же каталоге, что и stunnel_msspi.

Здравствуйте.

Похоже, всё-таки файла с таким именем нет в соответствующем каталоге.

UserPostedImage


Offline

Александр Лавник

Оставлено
:

14 января 2022 г. 9:36:57(UTC)

Здравствуйте.

Какое расширение у файла clicer?

Приложите содержимое stunnel.conf.

Каким образом запускаете stunnel_msspi?


Offline

octsha94

Оставлено
:

14 января 2022 г. 11:55:52(UTC)

Автор: Александр Лавник Перейти к цитате

Здравствуйте.

Какое расширение у файла clicer?

Приложите содержимое stunnel.conf.

Каким образом запускаете stunnel_msspi?

1.
.cer. Если использую отпечаток, то получаю аналогичную ошибку:

msspi: try open cert = “‎‎‎‎‎‎‎ed 81 bc af 5e e6 94 af 0a e9 57 a3 63 90 8c 7c 75 41 b7 b2” as file
msspi: add_mycert failed: “can not open file” (cert = “‎‎‎‎‎‎‎ed 81 bc af 5e e6 94 af 0a e9 57 a3 63 90 8c 7c 75 41 b7 b2”)

Сертификат импортирован, как в личное хранилище пользователя, так и в хранилище локального компьютера.

2.
output=stunnel.log
socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1
debug=7
[https]
client=yes
accept=127.0.0.1:1500
connect=195.209.130.19:443
cert=‎‎‎‎‎‎‎clicer.cer
verify=0

3.
Пробовал и как приложение, и как службу. Результат одинаковый. Службу запускаю от имени локального админа.


Offline

basid

Оставлено
:

14 января 2022 г. 23:45:17(UTC)

Указан относительный путь к файлу сертификата, но текущим каталогом для службы будет %SystemRoot%\System32 ?


Offline

octsha94

Оставлено
:

9 февраля 2022 г. 12:04:58(UTC)

Проблема осталась. Есть какое-то решение?


Offline

two_oceans

Оставлено
:

9 февраля 2022 г. 12:21:00(UTC)

У меня прописан полный путь. Смутно вспоминается, что в случае файла имеет значение еще и кодировка (BASE64 или голый DER). В случае BASE64 могут быть немного разные ограничители вида “—– BEGIN (чтототам) CERTIFICATE —–” и “—– END (чтототам) CERTIFICATE —–“. Возможно в Вашем файле ограничителей вообще нет? Короче, советую сохранить в DER без кодирования BASE64.

Отпечаток у меня указан без пробелов. В случае службы пользователь под которым работает служба должен иметь права на контейнер.

Код:

output=X:\Programs\stunnel2\stun-cli.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 5
#service = STunnel Service

[smart-s1] 
accept=192.168.0.5:769
connect=192.168.10.49:8080
cert=6fb23533ab4e45bacdcd363ad3893cacccc0c3b1
verify=0

[gks] 
client = yes
accept=192.168.0.5:770
connect=websbor.gks.ru:443
verify=0

Отредактировано пользователем 9 февраля 2022 г. 12:37:27(UTC)
| Причина: Не указана


Offline

octsha94

Оставлено
:

9 февраля 2022 г. 13:25:03(UTC)

Автор: two_oceans Перейти к цитате

Короче, советую сохранить в DER без кодирования BASE64.

У меня сертификат без закрытого ключа в формате Х.509 (.CER) в кодировке DER. Так требует сервис с которым я настраиваю интеграцию (ДМДК).


Online

Андрей *

Оставлено
:

9 февраля 2022 г. 13:33:21(UTC)

Автор: octsha94 Перейти к цитате

Автор: two_oceans Перейти к цитате

Короче, советую сохранить в DER без кодирования BASE64.

У меня сертификат без закрытого ключа в формате Х.509 (.CER) в кодировке DER. Так требует сервис с которым я настраиваю интеграцию (ДМДК).

Пробелы в отпечатке убраны?


Online

Андрей *

Оставлено
:

9 февраля 2022 г. 13:35:30(UTC)

Автор: octsha94 Перейти к цитате

Автор: two_oceans Перейти к цитате

Короче, советую сохранить в DER без кодирования BASE64.

У меня сертификат без закрытого ключа в формате Х.509 (.CER) в кодировке DER. Так требует сервис с которым я настраиваю интеграцию (ДМДК).

Звучит очень странно…
Без связи с контейнером может? В сертификатах нет закрытых ключей.

Сертификат тестируется в КриптоПРО CSP через Сервис\Протестировать\По сертификату?


Offline

octsha94

Оставлено
:

9 февраля 2022 г. 13:40:14(UTC)

Автор: two_oceans Перейти к цитате

Пробелы в отпечатке убраны?

Убрал пробелы. Получил ту же ошибку:

2022.02.09 13:37:45 LOG6[3]: msspi: try open cert = “‎‎‎9a8e02142c5e9062673c6fc7bd75a0982b9cd578” as file
2022.02.09 13:37:45 LOG3[3]: msspi: add_mycert failed: “can not open file” (cert = “‎‎‎9a8e02142c5e9062673c6fc7bd75a0982b9cd578”)


Offline

octsha94

Оставлено
:

9 февраля 2022 г. 13:43:15(UTC)

Автор: Андрей * Перейти к цитате

Автор: octsha94 Перейти к цитате

Автор: two_oceans Перейти к цитате

Короче, советую сохранить в DER без кодирования BASE64.

У меня сертификат без закрытого ключа в формате Х.509 (.CER) в кодировке DER. Так требует сервис с которым я настраиваю интеграцию (ДМДК).

Звучит очень странно…
Без связи с контейнером может? В сертификатах нет закрытых ключей.

Сертификат тестируется в КриптоПРО CSP через Сервис\Протестировать\По сертификату?

Да. Check container succeed no errors were detected. Я буквально цитирую мануал:

UserPostedImage

Креатив

24.11.21 – 11:25

Есть крипто про 4. Необходимо установить stunnel. Интернет пишет, что он входит в комплект установки. Но там ничего подобного не видно.
Или он всё-таки устанавливается отдельно? Тогда, где его взять?

Garykom

1 – 24.11.21 – 11:28

Креатив

2 – 24.11.21 – 11:37

(1)Мне под винду.

Aleksey

3 – 24.11.21 – 11:40

(2) И?
На скриншоте как раз ссылки под винду и написано что в линуксе это встроено

Креатив

4 – 24.11.21 – 12:04

(3)Ну да. А оно с 4-й версие крипто про работать будет? И файлик подозрительно мелкий всего 89кб.

Garykom

5 – 24.11.21 – 12:05

(4) ты лучше скажи для чего собрался туннель делать

Креатив

6 – 24.11.21 – 12:06

(5)ГИИС ДМДК.

Garykom

7 – 24.11.21 – 12:28

Garykom

8 – 24.11.21 – 12:29


Для настройки клиентской станции необходимо:
1. Скачать приложение для создания TLS-туннеля stunnel.x86/x64 с
сайта https://www.cryptopro.ru/products/csp/downloads
2. Сохранить скаченное приложение в каталоге c:\stunnel
3. Запустить командную строку от имени администратора и
выполнить c:\stunnel\stunnel.x64 -install
4. В каталоге c:\windows\system32 создать файл конфигурации
stunnel.conf со следующим содержимым:
output=c:\stunnel\stunnel.log

Креатив

9 – 24.11.21 – 16:17

(7)(8)Не читал. Пока тестовый контур пробую запустить. Благодарю за помощь.

BobG

10 – 09.02.22 – 23:13

Здравствуйте. Всё сделал по инструкции. Выдаёт ошибку:

Не удалось запустить службу Stunnel Service на Локальный компьютер
Ошибка 1069: Служба не запущена из-за ошибки входа в систему.

arsik

11 – 09.02.22 – 23:34

(10) Служба от кого запускается?

BobG

12 – 09.02.22 – 23:39

От Администратора

BobG

13 – 09.02.22 – 23:52

Эта ошибка была без пароля. Поставил пароль, Ошибка 1067: Процесс был неожиданно завершён

Сергиус

14 – 10.02.22 – 00:03

(13)Попробуйте переустановить службу.

Builder

15 – 10.02.22 – 00:26

Уже выкладывал тут кусок из инструкции от ювелирсофта

https://prnt.sc/26ndwxa

Это обязательное условие!

У меня все заработало 🙂

Сергиус

16 – 10.02.22 – 01:35

(15)Есть нормальный хостинг картинок?)

Anchorite

17 – 10.02.22 – 06:25

(13) У вас журналирование настроено? В настройках stunnel.conf проверьте опцию “output” — это путь к лог-файлу. Посмотрите, что там в журнале, выложите сюда вывод.

abfm

18 – 10.02.22 – 07:08

Вопрос как решился с сертификатом? У нас 3 раз бубен и третий раз разный.

Кирпич

19 – 10.02.22 – 08:13

Если туннель запускаете под системной учетной записью, то сертификат должен быть установлен в “Сертификаты локальный компьютер”. Если под другой учетной записью, то в хранилище этой учетной записи. Пароль доступа к контейнеру должен быть сохранен. Сертификат с открытым ключем сохранить на диске и прописать к нему путь в конфиге stunnel. В инструкции всё написано.
Смысл этой байды в том, что stunnel должен иметь доступ к закрытому ключу, который у вас в хранилище. Чтобы иметь доступ к хранилищу пользователя, stunnel должен запускаться от этого пользователя. Пароль от контейнера он спрашивать не умеет, потому пароль должен быть вбит заранее и сохранен (галку там поставить).

abfm

20 – 10.02.22 – 08:58

(19)Да конечно всё по инструкции. Всё от одного пользователя. Сертификат сохранен без ключа. Прописан в конфиге. При старте ругается на сертификат. Где то только в консольной версии работает. Где то как служба. ДМДК пишут об обезличенном сертификате, народ утверждает что такие не выдают для ип (проверить не могу). Чем он лучше не говорят. ЮвелирСофт всё молиться на прямые руки сисадмина и просит 14000 за настройку stunnel.

Всем привет! Я Максим, бэкенд-разработчик команды MSB (корпоративная сервисная шина), занимаюсь интеграциями систем для внутренних нужд компании Tele2, и в этом посте хочу поделиться опытом интеграции с “КриптоПро DSS” поверх ГОСТ TLS.

Введение

В связи с экономией на бумаге ростом цифровизации бизнес-процессов, в частности, с постепенным уходом от традиционных бумажных документов к электронному документообороту, возникла потребность реализовать электронную подпись документов у нас в компании.

В качестве сервера электронной подписи используется комплекс “КриптоПро DSS”, имеющий возможность встроить двухфакторное подтверждение операций подписания в мобильное приложение, посредством своего DSS SDK.

Мы встроили данный SDK в наше корпоративное мобильное приложение, о котором писала моя коллега в своей статье на Хабре.

Но мой рассказ связан с опытом решения задачи со стороны бэкенда, и мы рассмотрим эту задачу подробнее.

Описание проблемы и её решение

В нашей схеме подключение к серверу электронной подписи осуществляется по ГОСТ TLS с аутентификацией клиента по сертификату.

Но не секрет, что стандартные платформы, а именно горячо любимый мной .NET, не поддерживают российские криптошифры по ГОСТу.

В качестве эксперимента пробовал подключить rtengine, но он не завёлся, и, помимо прочего, он не является сертифицированным средством защиты информации. В таких случаях “КриптоПро” советует использовать “КриптоПро Stunnel”.

Изначально, stunnel – это open-source приложение, выступающее в роли шлюза, который принимает незашифрованный трафик и пересылает его на целевой сервер поверх TLS. Часто используется, когда клиент сам не поддерживает TLS-шифрование.

А Stunnel от “КриптоПро” – это практически тот же stunnel, но с поддержкой ГОСТ TLS, а значит, он замечательно подходит для решения нашей проблемы.

Представленная выше схема рабочая, если бы не одно но: согласно политикам безопасности в компании, все запросы во внешнюю сеть Интернет могут осуществляться только через корпоративный прокси. Ванильный stunnel из коробки умеет делать запросы через прокси, но “КриптоПро” эту фичу выпилил в своей редакции.

Чтобы обойти это ограничение, в схему было решено добавить еще одно известное Linux-администраторам приложение socat (еще один шлюз, в своем роде), который умеет делать подключения через HTTP-прокси. Важное условие – HTTP-прокси должен разрешать подключения через метод CONNECT.

В итоге схема станет такой:

Docker

Для упрощения было решено пренебречь правилом “один контейнер – один процесс” и запускать “КриптоПро Stunnel” и socat в одном контейнере. Данный контейнер поднимается в виде sidecar рядом с основным контейнером микросервиса. Это позволяет нашему микросервису общаться с “КриптоПро DSS” так, как будто бы они общались по http-протоколу, а вопросы шифрования трафика по ГОСТ TLS отдаются на откуп контейнеру с stunnel и socat.

Чтобы подготовить образ контейнера, нужно скачать deb-пакет с “КриптоПро CSP” (именно в составе этого дистрибутива и состоит “КриптоПро Stunnel”). К сожалению, скачать пакет нельзя по прямой ссылке, которую можно было бы прописать в Dockerfile (иначе бы статья получилась в два раза короче). Для скачивания нужно пройти регистрацию на сайте “КриптоПро”, и только потом будет дана возможность скачать пакет.

Ниже приведен пример Dockerfile, скриптов инициализации и конфига для “КриптоПро Stunnel”.

Рабочий пример можно также посмотреть здесь.

Dockerfile
FROM debian:buster-slim

EXPOSE 80/tcp

ARG TZ=Europe/Moscow
ENV PATH="/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64:${PATH}"

# stunnel settings
ENV STUNNEL_HOST="example.cryptopro.ru:4430"
ENV STUNNEL_HTTP_PROXY=
ENV STUNNEL_HTTP_PROXY_PORT=80
ENV STUNNEL_HTTP_PROXY_CREDENTIALS=
ENV STUNNEL_DEBUG_LEVEL=5
ENV STUNNEL_CERTIFICATE_PFX_FILE=/etc/stunnel/certificate.pfx
ENV STUNNEL_CERTIFICATE_PIN_CODE=

# dependencies
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
	&& echo $TZ > /etc/timezone \
	&& apt-get update \
	&& apt-get -y install lsb-base curl socat \
	&& rm -rf /var/lib/apt/lists/*
	
# install cryptopro csp
WORKDIR /dist
COPY dist/csp_deb.tgz csp_deb.tgz
RUN tar -zxvf csp_deb.tgz --strip-components=1 \
	&& ./install.sh cprocsp-stunnel
	
WORKDIR /

COPY conf/ /etc/stunnel
COPY bin/docker-entrypoint.sh docker-entrypoint.sh
COPY bin/stunnel-socat.sh stunnel-socat.sh

RUN chmod +x /docker-entrypoint.sh /stunnel-socat.sh
	
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["stunnel_thread", "/etc/stunnel/stunnel.conf"]
docker-entrypoint.sh
#!/bin/bash
# скрипт инициализации

# ---------------------------------
# настройка csp
echo "Configuring CryptoPro CSP..."

# импорт сертификата с закрытым ключом
if [[ ! -f "$STUNNEL_CERTIFICATE_PFX_FILE" ]]; then
    echo "Client certificate not found in ${STUNNEL_CERTIFICATE_PFX_FILE}"
    exit 1
fi

certmgr -install -pfx -file "${STUNNEL_CERTIFICATE_PFX_FILE}" -pin "${STUNNEL_CERTIFICATE_PIN_CODE}" -silent || exit 1
echo "Certificate was imported."
echo

# определение контейнера-хранилища закрытых ключей
containerName=$(csptest -keys -enum -verifyc -fqcn -un | grep 'HDIMAGE' | awk -F'|' '{print $2}' | head -1)
if [[ -z "$containerName" ]]; then
    echo "Keys container not found"
    exit 1
fi

# установка сертификата клиента
certmgr -inst -cont "${containerName}" -silent || exit 1

# экспорт сертификата для stunnel
exportResult=$(certmgr -export -dest /etc/stunnel/client.crt -container "${containerName}")
if [[ ! -f "/etc/stunnel/client.crt" ]]; then
    echo "Error on export client certificate"
    echo "$result"
    exit 1
fi

echo "CSP configured."
echo

# ---------------------------------
# запуск socat
echo "Starting socat..."
nohup bash /stunnel-socat.sh </dev/null >&1 2>&1 &

# ---------------------------------
# запуск stunnel
echo "Configuring stunnel..."
sed -i "s/^debug=.*$/debug=$STUNNEL_DEBUG_LEVEL/g" /etc/stunnel/stunnel.conf

echo "Starting stunnel"
exec "$@"
stunnel-socat.sh
#!/bin/bash
echo Configuring socat...

socatParameters="TCP:${STUNNEL_HOST}"

if [[ -n "$STUNNEL_HTTP_PROXY" ]]; then
    # если указан http-прокси, подключение будет происходить через него
    socatParameters="PROXY:${STUNNEL_HTTP_PROXY}:${STUNNEL_HOST},proxyport=${STUNNEL_HTTP_PROXY_PORT}"

    if [[ -n "$STUNNEL_HTTP_PROXY_CREDENTIALS" ]]; then
        socatParameters="${socatParameters},proxyauth=${STUNNEL_HTTP_PROXY_CREDENTIALS}"
    fi
fi

socatCmd="socat UNIX-LISTEN:/var/run/socat.sock,reuseaddr,fork ${socatParameters}"

while true; do
    rm -f /var/run/socat.sock
    echo $(date) "Start socat instance."
    ${socatCmd}
    sleep 1
done
stunnel.conf
foreground=yes
pid=/var/opt/cprocsp/tmp/stunnel_cli.pid
output=/dev/stdout
debug=5

[https]
client=yes
accept=80
cert=/etc/stunnel/client.crt
verify=0
connect=/var/run/socat.sock

Про Dockerfile рассказывать не буду, он достаточно тривиален, а вот скрипт инициализации docker-entrypoint.sh интереснее. Первым делом скрипт импортирует сертификат с закрытым ключом в хранилище ключей, так как “КриптоПро Stunnel” для работы необходим закрытый ключ. Затем из хранилища экспортируется сертификат с открытым ключом в формате DER. В дальнейшем по этому сертификату “КриптоПро Stunnel” будет получать закрытый ключ из хранилища ключей.

После инициализации хранилища ключей происходит настройка и запуск socat. Для конфигурирования socat добавлены переменные окружения, которые позволяют указать, через какой HTTP-прокси необходимо выполнять запросы. Не буду останавливаться на этих переменных – их описание есть в репозитории. Однако не лишним будет уточнить, что, если переменные не указаны, socat будет самостоятельно выполнять TCP-запросы до целевого сервера. Для получения входящих запросов socat открывает unix-сокет, на который и будет обращаться “КриптоПро Stunnel”.

Финальным шагом в скрипте являются конфигурирование Stunnel и его последующий запуск.

“КриптоПро Stunnel” при запуске начинает прослушивать порт 80, то есть принимать голый HTTP-трафик. HTTP-трафик будет шифроваться по ГОСТу и пересылаться на unix-сокет, который слушает socat. Socat, в свою очередь, откроет соединение с целевым сервером, напрямую или через HTTP-прокси, и отправит уже шифрованный запрос.

Шифрованный ответ от целевого сервера пройдет ту же цепочку, только обратном порядке, и вызывающему приложению будет возвращен ответ в виде plain text, что позволит не реализовывать ГОСТ TLS внутри приложений (если такая реализация вообще возможна).

Вместо заключения

К сожалению, документация по отечественным решениям зачастую достаточно скромна. К примеру, на попытки заставить работать “КриптоПро Stunnel” через HTTP-прокси ушло много времени, пока не пришло понимание, что “КриптоПро Stunnel” прокси не поддерживает и что без еще одного инструмента не обойтись.
Данная статья призвана помочь сберечь ваше время, надеюсь, описанное окажется полезным.

Бонус

В качестве бонуса хотелось бы поделиться несколькими советами:

Список ресурсов

  • stunnel TLS Proxy

  • Шифрование TLS-трафика по алгоритмам ГОСТ-2012 c Stunnel

Экономим бюджет компании, или как построить ГОСТовский крипто-туннель с минимальными затратами

Автор статьи: Роман Вегелин

Содержание1. Введение2. Задача3. В бой a. Linux b. Windows

Для любого системного администратора или DevOps’а построить VPN или пробросить нестандартный метод инкапсуляции пакетов (туннелирование) не очень сложно. Часто для этого используют OpenVPN для постоянного использования, либо ssh-туннелирование на один-два раза. Однако есть организации, которые должны соблюдать строгие рамки передачи данных, установленные законодательством. Под такие организации попадают банки, микрофинансовые организации (да и многие организации, которые так или иначе имеют отношения к финансовым операциям). Защита персональных данных тоже является “защищаемой информацией” во всех законопроектах и положениях.

В результате, опять же по законодательству, при шифровании необходимо использовать СКЗИ со всеми необходимыми ФСТЕКовскими сертификатами и лицензиями, которые удовлетворяют необходимые требования. Одним из таких программных обеспечений является КриптоПро CSP. И в данной статье будем разбирать как “прокинуть” сетевой туннель средствами stunnel, который будет шифроваться КриптоПро CSP, заодно получим хоть и тестовый (на 3 месяца), но полностью валидный по GOST_2012.

Задача

Для начала необходимо разбираться как эта все будет работать и поставить конкретные задачу.

К примеру, есть две машины. Чтобы показать настройку двух операционных систем, одна будет на Linux Ununtu, версия не важна, но желательно не ниже 16), вторая на Windows 10. На win-системе будет запускаться NC на прослушку какого-то определенного порта, а с nix-системы будут передаваться пакеты. Таким образом windows будет сервером. В отношении настроек stunnel такая же ранжировка: Windows — сервер.

Что должно получиться в итоге получить? При подключении с Linux к Windows программой NC, все пакеты будут шифроваться сертификатом GOST_2012, и сертифицированным программным обеспечением. Задача тривиальная, чтобы показать возможность такого маневра. Так, как stunnel передает любой протокол внутри себя, можно, к примеру, подписывать XML-файлы секретной подписью другой организации, или передавать перс. данные в хранилище через интернет.

В бой
#Linux

Начнем с того, что система готова к настройке. Как работает КриптоПро скорее всего все уже знают. Небольшие уточнения по stunnel: этот софт изначально предназначался как прокси с функцией шифрования трафика. Другими словами — он берет, к примеру, http и превращает его в, своего рода, https (если не вдаваться в подробности протоколирования).

Работает stunnel следующим образом — при запуске на локальной машине открывается определенный, указанный в конфигурационном файле порт. И в тот же момент, софт соединяется с stunnel на другой машине. Таким образом, все пакеты, попавшие на порт localhost шифруются, затем проксируются на другую систему и там расшифровываются. Удобство в том, что это просто шлюз, и какой протокол ему шифровать и передавать — не важно.

криптопро stunnel сертификат

Рисунок 1. Схема работы stunnel

Изначально скачиваем необходимый КриптоПро отсюда. В скаченном архиве будет примерно такой набор файлов, как на скриншоте.

криптопро stunnel сертификат

Рисунок 2. КриптоПро на Linux.

Для установки необходимо запустить install.sh. Этот скрипт поставит нежные компоненты. А именно: certmgr, cpverify, cryptcp, csptest, csptestf, curl ,der2xer, genkpim, inittst, wipefile. У каждой из этих программ своя зона ответственности, свои ключи и задачи… Для задачи нужны будут только certmgr, cryptcp.

Бинарные файлы падают в /opt/cprocsp/bin/ а не в /bin, поэтому запустить их просто командой не получится. Необходимо либо запускать напрямую оттуда, либо сделать символьные ссылки. Только делать ссылку curl не стоит, ибо работает он криво: не видит список удостоверяющих центров из операционной системы, и как следствие, завершает любой запрос с ошибкой и приходится использовать ключ -k который отменяет проверку сертификата на валидность.

Как таковой, stunnel использует openssl для шифрования трафика, но ребята из КриптоПро его переписали под себя, и теперь он “дергает” утилиты для un- и de- шифрования, и называется stunnel-msspi. Поставляется он в архиве, вместе с CSP, либо можно скачать отдельно. У кого старый CSP, есть вероятность, что уже установлен, но это не точно, необходимо проверить.

Как уже выше было сказано, для stunnel линукс система будет клиентом, windows -сервером. IP-адреса будут следующими Linux — 172.22.1.65, Windows — 172.22.1.121

Следующий шаг — ключи и сертификаты. Для сервера нам необходимы сертификат и ключ, причем это все в КриптоПрошном контейнере. Для клиента только сертификат. Сертификат клиенту нужен для того, чтобы кто угодно не мог подключиться к данному туннелю. Забегая немного вперед, в конфигурационном файле stunnel есть такая опция — verify=, и вот ее параметры:

0. Не проверять сертификат сервера
1. Проверять сертификат при его наличии
2. Проверять сертификат всегда
3. Проверять наличие данного сертификата в хранилище TrustedUsers

Начиная с параметра 1 и нужен сертификат клиента для защиты самого подключения.

Итак, для генерации контейнер для сервера необходимо воспользоваться утилитой cryptcp:
cryptcp -creatcert -provtype 81 -dn “C=RU, L=Rostov-na-Donu, CN=srv, 1.2.643.100.5=305867501589415” -exprt -ex -cont “\\\\.\\HDIMAGE\\srv” -ku -certusage “1.3.6.1.5.5.7.3.1” -hashAlg “1.2.643.7.1.1.2.3” -ca http://www.cryptopro.ru/certsrv

Интересные моменты по ключам:· provtype — указывает тип криптопровайдера. Дефолтно подставляется 75. Значение этих цифр можно узнать так: в каталоге /opt/cprocsp/sbin/amd64 лежит программа cpconfig. нужно запустить ее следующими со ключами: ./cpconfig -defprov –view_type.

криптопро stunnel сертификат

Рисунок 3. cpconfig

На скриншоте выше видно, что значение 75 устарело, и соответствует ГОСТу 2001. 80 — ГОСТ 2012 256 бит и 81 — ГОСТ 2012 512 бит.

· certusage — идентификатор назначения. Для выполнения задачи необходимы два модуля: проверка подлинности клиента (1.3.6.1.5.5.7.3.2) и проверка подлинности сервера (1.3.6.1.5.5.7.3.1)· hashAlg — алгоритм, который будет применяться. Их можно найти тут· ca — центр сертификации, который подпишет все это добро, чтобы оно было валидно. Сертификаты и ключи валидны ТОЛЬКО в течении 3 месяцев!!! Точнее данный УЦ его выдает на 3 месяца.· cont — контейнер, который будет создан, и в него сохранятся файлы. Если контейнер с таким именем есть — то естественно ничего не отработает.

Выше описаны самые “пикантные” моменты, которые могут отъесть много времени, остальные ключи и непонятные моменты можно найти в мануале. Кстати, проверить можно командой certmgr –list. В выводе отобразится исчерпывающую информацию по контейнерам системы и пользователя.

Переходим к генерации сертификата для клиента. Команда аналогичная, меняется только имя контейнера и идентификатор назначения сертификата.

cryptcp -creatcert -provtype 81 -dn “C=RU, L=Rostov-na-Donu, CN=srv, 1.2.643.100.5=305867501589415” -exprt -ex -cont “\\\\.\\HDIMAGE\\srv” -ku -certusage “1.3.6.1.5.5.7.3.2” -hashAlg “1.2.643.7.1.1.2.3” -ca http://www.cryptopro.ru/certsrv

С ключами и сертификатами все готово. На всякий случай, вот команда экспорта сертификата из контейнера:

certmgr -export -provtype 81 -dest /куда экспортировать сертификат/имя сертификата -cont “\\\\.\\HDIMAGE\\имя контейнера”

Таким образом будет на руках сертификат в der формате.

Следующим шагом надо приниматься за настройку stunnel, а конкретно его конфигурационного файла. Создаем в удобном месте файл stunnel.conf. Содержимое будет следующее:

setuid = rootsetgid = rootpid = /var/opt/cprocsp/tmp/stunnel.pidsocket = l:TCP_NODELAY=1socket = r:TCP_NODELAY=1

debug = 7output = /home/bit/stunnel.log

[TestStunnel]
client = yes
accept = 0.0.0.0:13501
connect = 172.22.1.121:13500
verify = 2
cert = 0xb26305dgbhq47316f4fb80d4877383c4493b3g4d

Секция TestStunnel:Client — указатель, является ли программа сервером или клиентомAccept — порт, который будет открываться на локалхосте, именно к нему будет подключаться программаConnect — ip и порт сервера, к которому будем подключатьсяVerify — об этом разговор уже выше былCert — это как раз клиентский сертификат. Вот в этом пункте необходимо задержаться.

Можно указать этот параметр двумя способами: импортировать сертификат из контейнера, и прописать путь к файлу, или воспользоваться отпечатком сертификата. Достать отпечаток можно все той же командой certmgr –list. Идентификатор указан как SHA1 Hash.

криптопро stunnel сертификат

Рисунок 4. Отпечаток в Linux

На этом настройка Linux закончена, можно запускать stunnel с указание конфига stunnel stunnel.conf.

# Windows

После установки CSP необходимо скопировать контейнер с серверным ключом и сертификатом с nix-машины.

Все контейнеры попадают в /var/opt/cprocsp/keys/username, и состоит 6 файлов с расширением .key. Копируем все, но будет небольшая проблема с импортом этого контейнера в CSP. КриптоПро считает, что хранить его на жестком диске не безопасно, и необходим токен. Этот момент можно обойти, создав эмулятор контейнера.

Для этого необходимо скачать и установить ImDisk. Затем, при помощи ImDisk Virtual Disk Driver, создать эмулятор токена (именно так его и увидит CSP, по-русски это просто контейнер HDD), и подключаем его к системе.

криптопро stunnel сертификат

Рисунок 5. Псевдотокен

В итоге, рядом с жестким диском, должен появиться еще один носитель — это и есть токен. Туда и надо скопировать папку с контейнером. После этих манипуляций сертификат нормально установится в CSP.

Плюсом ко всему, желательно (обязательно) надо скопировать клиентский сертификат на сервер и тоже его поставить.

Конфигурационный файл для stunnel-msspi:

output= C:\stunnel\stun.logsocket = l:TCP_NODELAY=1socket = r:TCP_NODELAY=1debug = 7

[https]
client = no
accept = 13500
connect = 13501
#cert =E:\srv1.000\srv.cer
cert = 60e26867b649ec6401a42892fa9ab752e51c7e1f
CApath = TrustedPeople
verify=2

Тут все по аналогии с конфигурационным файлом клиента: accept-порт, на который подключается клиентская стуннелина (должен быть разблокирован фаерволом, проброшен во все места до наружного выхода), connect — порт для приложения (в данном случае nc).

В плане сертификата — тут та же история, либо импортим из контейнера, что совсем не рекомендуется, либо указывать отпечаток. Отпечаток можно найти в составе сертификата.

криптопро stunnel сертификат

Рисунок 6. Отпечаток в Windows

Лог для дебага можно будет отключить тогда, когда все будет настроено как часы.
Далее необходимо скачать nc для Windows.
Теперь надо запустить сервер stunnel, заодно перезапустить клиента. Для дебага и теста в Windows это лучше делать с командной строки.

На сервере запускается как:nc –nvlp 13501

На клиенте:nc 127.0.0.1 13501

В командной строке сервера побежит лог, который расскажет, что кто-то успешно приконнектился.Пишем в одном окне набор символов, он появляется в другом. Все настроено верно.

Читайте также:  Криптография и электронная подпись в решениях на 1С
Оцените статью
ЭЦП Эксперт
Добавить комментарий

Adblock
detector