Хотите знать, что-то относительно промежуточных сертификатов и Weechat

360
dv_

У меня есть частный сервер дома, который запускает экземпляр 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 отправляется неправильно, потому что клиенты сообщают об ошибках, которые они не могут проверить сертификат моего домена. Что еще более странно, так это то, что браузеры, похоже, не имеют этой проблемы, поскольку у Glowing Bear (клиент-ретранслятор HTML5 WeeChat) такой проблемы нет.

Мне пришлось вручную скопировать файл .crt сертификата intermedia CA /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, сертификатами и т. Д., Поэтому я все еще изучаю этот материал.

0

1 ответ на вопрос

1
dv_

Конечно, вскоре после публикации вопроса я нашел ответ. Я все еще держу это здесь, чтобы другие могли извлечь уроки из этого.

Ответ состоял в том, что в файле .pem, который я добавил в weechat, два сертификата были связаны, но произошла ошибка - по неизвестным причинам промежуточный сертификат был недействительным. Я воссоздал цепочечный файл .pem с cat my-domain.x509.crt intermediate.crt my-domain.priv.key > relay.pem, и теперь он работает нормально.