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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline bigsmog88  
#1 Оставлено : 12 февраля 2024 г. 12:24:50(UTC)
bigsmog88

Статус: Участник

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

Добрый день!
Подскажите как надо правильно настроить stunnel-msspi для следующей задачи:

Есть web страница за stunnelом, я хочу что бы при открытии страницы https://192.168.1.3:2446 открывался веб сайт который находится за стуннелом, при этом на клиенте должен быть сертификат который будет проверять стуннел, если сертификата нет, то страница не должна открываться.

Сейчас у меня получилось настроить вот так, но работает не совсем как мне надо, система веб страничка открывается, но проверки сертификата не происходит, т.е. я в браузере набираю адрес стуннела с портом 2446 страница веб открывается, при этом у меня не установлено открытого ключа на ПК клиента, пускает без каких либо сертификатов.
когда ставлю verify = 2 в блок клиент, то страница перестает открываться, и не открывается если сертификаты установить на ПК с которого я пытаюсь открыть веб страницу. Что-то я запутался в сертификатах. Сертификаты ГОСТ, установлены через крипто про, связь с закрытыми ключами есть.
стуннел одновременно и клиент и сервер, все установлено на одной ВМ.

Код:

output = /var/log/stunnel-msspi.log
;pid=/tmp/stunnel_cli.pid
debug = 7

[server]
client = no
accept = 127.0.0.1:2447
connect = 127.0.0.1:2445
verify = 0
cert = /opt/stunnel/ssl/msspi/rootCA.cer

[client]
client = yes
accept = 2446
connect = 127.0.0.1:2447
verify = 0
CAfile = /opt/stunnel/ssl/msspi/rootCA.cer
cert = /opt/stunnel/ssl/msspi/user.cer

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

Offline pd  
#2 Оставлено : 28 февраля 2024 г. 13:57:01(UTC)
pd

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,451
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 32 раз
Поблагодарили: 418 раз в 309 постах
Автор: bigsmog88 Перейти к цитате
Добрый день!
Подскажите как надо правильно настроить stunnel-msspi для следующей задачи:

Есть web страница за stunnelом, я хочу что бы при открытии страницы https://192.168.1.3:2446 открывался веб сайт который находится за стуннелом, при этом на клиенте должен быть сертификат который будет проверять стуннел, если сертификата нет, то страница не должна открываться.

Сейчас у меня получилось настроить вот так, но работает не совсем как мне надо, система веб страничка открывается, но проверки сертификата не происходит, т.е. я в браузере набираю адрес стуннела с портом 2446 страница веб открывается, при этом у меня не установлено открытого ключа на ПК клиента, пускает без каких либо сертификатов.
когда ставлю verify = 2 в блок клиент, то страница перестает открываться, и не открывается если сертификаты установить на ПК с которого я пытаюсь открыть веб страницу. Что-то я запутался в сертификатах. Сертификаты ГОСТ, установлены через крипто про, связь с закрытыми ключами есть.
стуннел одновременно и клиент и сервер, все установлено на одной ВМ.

Код:

output = /var/log/stunnel-msspi.log
;pid=/tmp/stunnel_cli.pid
debug = 7

[server]
client = no
accept = 127.0.0.1:2447
connect = 127.0.0.1:2445
verify = 0
cert = /opt/stunnel/ssl/msspi/rootCA.cer

[client]
client = yes
accept = 2446
connect = 127.0.0.1:2447
verify = 0
CAfile = /opt/stunnel/ssl/msspi/rootCA.cer
cert = /opt/stunnel/ssl/msspi/user.cer



Кажется вы не понимаете сути понятий client/server по отношению к stunnel.

При работе stunnel в режиме client, он принимает данные в открытом виде от пользователя на accept, устанавливает защищённое соединение в сторону connect (при необходимости проверяет сертификат стороны connect) и при успехе пересылает данные стороне connect по защищенному каналу.

При работе stunnel в режиме server, он устанавливает защищённое соединение от пользователя на accept (при необходимости запрашивает и проверяет сертификат пользователя), устанавливает незащищённое соединение в сторону connect и при успехе пересылает данные в открытом виде стороне connect.

Таким образом, verify в режиме client влияет на проверку сертификата стороны connect, а если вы хотите, чтобы сертификат пользователя запрашивался и проверялся, то речь про режим server.
Знания в базе знаний, поддержка в техподдержке
Offline bigsmog88  
#3 Оставлено : 29 февраля 2024 г. 12:18:29(UTC)
bigsmog88

Статус: Участник

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

Автор: pd Перейти к цитате
При работе stunnel в режиме server, он устанавливает защищённое соединение от пользователя на accept (при необходимости запрашивает и проверяет сертификат пользователя), устанавливает незащищённое соединение в сторону connect и при успехе пересылает данные в открытом виде стороне connect.
т.е. для реализации такой задачи достаточно только блока server? Как то так должна выглядеть настройка?

Код:

[server]
client = no
accept = 2446
connect = 127.0.0.1:2445
verify = 2
CAfile = /opt/stunnel/ssl/msspi/user.cer
cert = /opt/stunnel/ssl/msspi/rootCA.cer

Отредактировано пользователем 1 марта 2024 г. 12:05:43(UTC)  | Причина: Не указана

Offline bigsmog88  
#4 Оставлено : 29 февраля 2024 г. 15:11:21(UTC)
bigsmog88

Статус: Участник

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

Оставил один блок server
сертификат сервера установил согласно инструкции в хранилище ROOT
получился вот такой конфиг


Код:

[server]
client = no
accept = 2446
connect = 127.0.0.1:2445
verify = 2
cert = /opt/stunnel/ssl/msspi/rootCA.cer


с ПК пользователя ОС Win (тут стуннел не установлен) пробую открыть браузер но стуннел сервер меня не пропускает, на ПК пользователя сертификат rootCA.cer установлен в доверенные и в личное хранилище. Обязательно ли на ПК пользователя устанавливать стуннел клиент?

лог попытки
Код:

2024.02.21 09:21:05 LOG7[35]: Service [server] started
2024.02.21 09:21:05 LOG7[35]: Setting local socket options (FD=3)
2024.02.21 09:21:05 LOG7[35]: Option TCP_NODELAY set on local socket
2024.02.21 09:21:05 LOG5[35]: Service [server] accepted connection from 192.168.1.2:52747
2024.02.21 09:21:05 LOG6[35]: msspi: try open cert = "/opt/stunnel/ssl/msspi/rootCA.cer" as file
2024.02.21 09:21:05 LOG6[35]: Peer certificate required
2024.02.21 09:21:05 LOG3[35]: SSL_accept
2024.02.21 09:21:05 LOG5[35]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
2024.02.21 09:21:05 LOG7[35]: Local descriptor (FD=3) closed
2024.02.21 09:21:05 LOG7[35]: Service [server] finished (0 left)


подскажите, что не так я делаю?

Отредактировано пользователем 1 марта 2024 г. 12:04:56(UTC)  | Причина: Не указана

Offline pd  
#5 Оставлено : 29 февраля 2024 г. 16:32:24(UTC)
pd

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,451
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 32 раз
Поблагодарили: 418 раз в 309 постах
Автор: bigsmog88 Перейти к цитате
Автор: pd Перейти к цитате
При работе stunnel в режиме server, он устанавливает защищённое соединение от пользователя на accept (при необходимости запрашивает и проверяет сертификат пользователя), устанавливает незащищённое соединение в сторону connect и при успехе пересылает данные в открытом виде стороне connect.
т.е. для реализации такой задачи достаточно только блока server? Как то так должна выглядеть настройка?

Цитата:

[server]
client = no
accept = 2446
connect = 127.0.0.1:2445
verify = 2
CAfile = /opt/stunnel/ssl/msspi/user.cer
cert = /opt/stunnel/ssl/msspi/rootCA.cer


Как-то так, но для сервера в cert нужно указывать его рабочий сертификат, а CAfile не обязателен.

У вас в cert, судя по названию, вообще зачем-то корневой.
Знания в базе знаний, поддержка в техподдержке
Offline bigsmog88  
#6 Оставлено : 29 февраля 2024 г. 17:34:47(UTC)
bigsmog88

Статус: Участник

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

а на ПК клиента стуннел с ролью клиент должен быть установлен? Или достаточно приложения которое будет подключаться к адресу стуннел сервера и использовать установленный сертификат из локального хранилища пользователя?
Offline bigsmog88  
#7 Оставлено : 29 февраля 2024 г. 18:32:00(UTC)
bigsmog88

Статус: Участник

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

для эксперимента я установил стуннел с ролью клиента на ПК пользователя с такой конфигурацией, в качестве сертификата пользователя взял тот же что был на сервере, установил его с привязкой к ключу и экспортировал в файл как DER.
Для сервера выпустил новый сертификат содержащий имя сервера и установил его с привязкой к ключу в хранилище My, экспортировал его в файл как DER.
страницу в данном случае теперь открываю с ПК пользователя по ссылке http://localhost:1500/ping

конфиг на ПК пользователя
Код:

output=C:\Stunnel\stun.log
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7

[https]
msspi = yes
client = yes
accept=1500
connect = 192.168.1.122:2446
cert=C:\Stunnel\user_der.cer
verify=0


конфиг на сервере

Код:

[server]
client = no
accept = 2446
connect = 127.0.0.1:2445
verify = 2
cert = /opt/stunnel/ssl/msspi/servercrt.cer


если на сервере установить verify = 0 то страница web открывается, если стоит 2 то не пускает, в логе сервера следующее

Код:

2024.02.21 12:40:58 LOG7[14]: Service [server] started
2024.02.21 12:40:58 LOG7[14]: Setting local socket options (FD=3)
2024.02.21 12:40:58 LOG7[14]: Option TCP_NODELAY set on local socket
2024.02.21 12:40:58 LOG5[14]: Service [server] accepted connection from 192.168.1.2:52302
2024.02.21 12:40:58 LOG6[14]: msspi: try open cert = "/opt/stunnel/ssl/msspi/servercrt.cer" as file
2024.02.21 12:40:58 LOG6[14]: Peer certificate required
2024.02.21 12:40:58 LOG6[14]: msspi: TLSv1.2 accepted (C100)
2024.02.21 12:40:58 LOG3[14]: msspi: verify failed (MSSPI_VERIFY_ERROR)
2024.02.21 12:40:58 LOG5[14]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
2024.02.21 12:40:58 LOG7[14]: Local descriptor (FD=3) closed
2024.02.21 12:40:58 LOG7[14]: Service [server] finished (0 left)


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

Bezymjannyjj.jpg (274kb) загружен 3 раз(а).

Отредактировано пользователем 29 февраля 2024 г. 18:39:26(UTC)  | Причина: Не указана

Offline pd  
#8 Оставлено : 29 февраля 2024 г. 23:25:50(UTC)
pd

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,451
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 32 раз
Поблагодарили: 418 раз в 309 постах
Автор: bigsmog88 Перейти к цитате
все сертификаты установлены на сервере

Bezymjannyjj.jpg (274kb) загружен 3 раз(а).


То есть, сертификат клиента и на сервере и на ПК? Зачем он на сервере?

1) можно запустить на сервере "CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/certmgr -list -chain", чтобы убедиться, что все цепочки строятся для всех сертификатов без ошибок (раз сертификат клиента там уже установлен).

2) если команда выше не вносит понимания, можно запустить stunnel в консольном режиме "foreground = yes" и просто запустить в консоли: "CP_PRINT_CHAIN_DETAIL=1 stunnel_msspi", тогда мы увидим более подробный лог в консоли почему проверка цепочки сертификатов возвращает ошибку.

Отредактировано пользователем 29 февраля 2024 г. 23:26:38(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline bigsmog88  
#9 Оставлено : 1 марта 2024 г. 12:03:15(UTC)
bigsmog88

Статус: Участник

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

Автор: pd Перейти к цитате
Автор: bigsmog88 Перейти к цитате
все сертификаты установлены на сервере

Bezymjannyjj.jpg (274kb) загружен 3 раз(а).


То есть, сертификат клиента и на сервере и на ПК? Зачем он на сервере?

1) можно запустить на сервере "CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/certmgr -list -chain", чтобы убедиться, что все цепочки строятся для всех сертификатов без ошибок (раз сертификат клиента там уже установлен).

2) если команда выше не вносит понимания, можно запустить stunnel в консольном режиме "foreground = yes" и просто запустить в консоли: "CP_PRINT_CHAIN_DETAIL=1 stunnel_msspi", тогда мы увидим более подробный лог в консоли почему проверка цепочки сертификатов возвращает ошибку.


Выполнил пункт 1 - есть какая-то ошибка с проверкой сертификатов сервера и пользователя, но рутовый проверяется успешно. Сертификат пользователя и сервера были подписаны рутовым сертификатом при создании. лог команды во вложении.
выполнил пункт 2 - получил вот такой лог
Код:

2024.03.01 11:53:56 LOG7[ui]: Found 1 ready file descriptor(s)
2024.03.01 11:53:56 LOG7[ui]: FD=4 events=0x2001 revents=0x0
2024.03.01 11:53:56 LOG7[ui]: FD=9 events=0x2001 revents=0x1
2024.03.01 11:53:56 LOG7[ui]: Service [server] accepted (FD=3) from 192.168.1.2:61236
2024.03.01 11:53:56 LOG7[9]: Service [server] started
2024.03.01 11:53:56 LOG7[9]: Setting local socket options (FD=3)
2024.03.01 11:53:56 LOG7[9]: Option TCP_NODELAY set on local socket
2024.03.01 11:53:56 LOG5[9]: Service [server] accepted connection from 192.168.1.2:61236
2024.03.01 11:53:56 LOG6[9]: msspi: try open cert = "/opt/stunnel/ssl/msspi/servercrt.cer" as file
2024.03.01 11:53:56 LOG6[9]: Peer certificate required
2024.03.01 11:53:56 LOG6[9]: msspi: TLSv1.2 accepted (C100)
1.Find path for:
  Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user test, SN=famili root, G=name root'
  Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'

Found at store 0x772e34064d30:
  Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
  Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'

2.Find path for:
  Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
  Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'

Verifing chain....
 initial oid = 2.5.29.32.0
1. Verifing chain item:
  Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
  Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
 No extension. Create new leaf depth1
level = 1 Node size = 1
level = 1 num_child = 0
level = 1 parent_i = 0
level = 1 parent_j = 0
2. Verifing chain item:
  Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user test, SN=famili root, G=name root'
  Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'

  Searching certificate in crl.
  Found at attached list:
    Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
    Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'

  Found at store 0x772e34064d30:
    Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
    Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'

  Certificate crl status undetermined.
  Certificate crl status undetermined.
Build chain is not valid.
There is no valid issuer.
----------- Error chain -----------
Chain status:REVOCATION_STATUS_UNKNOWN
Revocation reason:unspecified
1.
 Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
 Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
 Cert status:CERT_TRUST_NO_ERROR
2.
 Subject:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user test, SN=famili root, G=name root'
 Issuer:'C=RU, S=>A:>2A:0O >1;0ABL, CN=user root, SN=famili root, G=name root'
 Cert status:REVOCATION_STATUS_UNKNOWN

2024.03.01 11:53:56 LOG3[9]: msspi: verify failed (MSSPI_VERIFY_ERROR)
2024.03.01 11:53:56 LOG5[9]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
2024.03.01 11:53:56 LOG7[9]: Local descriptor (FD=3) closed
2024.03.01 11:53:56 LOG7[9]: Service [server] finished (0 left)



log_cert.txt (11kb) загружен 2 раз(а).

Отредактировано пользователем 1 марта 2024 г. 12:09:07(UTC)  | Причина: Не указана

Offline pd  
#10 Оставлено : 1 марта 2024 г. 12:09:02(UTC)
pd

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,451
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 32 раз
Поблагодарили: 418 раз в 309 постах
Автор: bigsmog88 Перейти к цитате
Выполнил пункт 1 есть какая-то ошибка с проверкой сертификатов сервера и пользователя, но рутовый проверяется успешно.

Пока с этим не разберётесь, переходить к следующим шагам смысла нет, на этом шаге ошибок быть не должно.
Знания в базе знаний, поддержка в техподдержке
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.