У меня дома есть частный сервер, который запускает экземпляр node.js и викенч. У меня также есть свой собственный домен, который я зарегистрировал на EuroDNS, а также сертификат AlphaSSL, также от EuroDNS.
Протокол ретрансляции Weechat и node.js настроены на использование TLS (node.js настроен на отказ от HTTP-запросов, разрешен только HTTPS). Что странно, так это то, что я могу без проблем обращаться к серверу node.js через HTTPS, используя любой клиент HTTPS. openssl s_client
тоже хорошо работает. Протокол ретрансляции Weechat, однако, не. По какой-то причине, когда я пытаюсь открыть для него сокет TLS, создается впечатление, что промежуточный сертификат EuroDNS AlphaSSL CA не отправляется должным образом, поскольку клиенты сообщают об ошибках, которые они не могут проверить сертификат моего домена. Что еще более странно, что браузеры, похоже, не имеют этой проблемы, так как Светящийся медведь (эстафетный клиент HTML5 WeeChat) не имеет этой проблемы.
Я должен был вручную скопировать файл сертификата .media /usr/share/ca-certificates
а потом беги dpkg-reconfigure ca-certificates
чтобы иметь возможность открыть сокет TLS для реле Weechat.
я использовал openssl s_client -connect
чтобы получить некоторую информацию. Вот что происходит, когда я получаю доступ к серверу node.js (слегка измененный по соображениям конфиденциальности):
CONNECTED(00000003)
depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = AlphaSSL CA - SHA256 - G2
verify return:1
depth=0 C = DE, OU = Domain Control Validated, CN = example.com
verify return:1
---
Certificate chain
0 s:/C=DE/OU=Domain Control Validated/CN=example.com
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
---
И вот что происходит, если я пытаюсь открыть сокет TLS для реле Weechat:
CONNECTED(00000003)
depth=0 C = DE, OU = Domain Control Validated, CN = example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = DE, OU = Domain Control Validated, CN = example.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=DE/OU=Domain Control Validated/CN=example.com
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
---
Если я прочитал это правильно, то Weechat, очевидно, не отправляет промежуточный сертификат, в то время как node.js. И это, вероятно, не проблема в браузере, потому что он поставляется с этим промежуточным сертификатом. Это также объясняет, почему проблемы с подключением к реле исчезают, когда я добавляю промежуточный сертификат AlphaSSL к сертификатам системы.
Правильно ли мое предположение? Значит ли это, что у Weechat есть ошибка? Я довольно плохо знаком с CA, сертификатами и т. Д., Поэтому я все еще изучаю этот материал.