Ich frage mich, was Zwischenzertifikate und Weechat betrifft

493
dv_

Ich habe einen privaten Server zu Hause, der eine node.js-Instanz und ein weechat ausführt. Ich habe auch eine eigene Domain, die ich bei EuroDNS registriert habe, sowie ein AlphaSSL-Zertifikat, ebenfalls von EuroDNS.

Sowohl das Relech-Protokoll von Weechat als auch node.js sind für die Verwendung von TLS eingerichtet (node.js ist so konfiguriert, dass HTTP-Anforderungen abgelehnt werden, nur HTTPS ist zulässig). Seltsam ist, dass ich über HTTPS problemlos auf den node.js-Server zugreifen kann, indem ich einen HTTPS-Client verwende. openssl s_clientfunktioniert auch gut Das Relay-Protokoll von Weechat tut dies jedoch nicht. Wenn ich versuche, einen TLS-Socket zu öffnen, scheint es aus irgendeinem Grund, dass das zwischengeschaltete EuroDNS AlphaSSL CA-Zertifikat nicht ordnungsgemäß gesendet wird, da die Clients Fehler melden, die das Zertifikat meiner Domäne nicht überprüfen können. Seltsamer ist, dass Browser dieses Problem nicht zu haben scheinen, da Glühender Bär (HTML5 WeeChat-Relay-Client) dieses Problem nicht hat.

Ich musste die .crt-Datei des Intermedia-CA-Zertifikats manuell in kopieren /usr/share/ca-certificatesund dann ausführen dpkg-reconfigure ca-certificates, um einen TLS-Socket für das Weechat-Relay öffnen zu können.

Ich habe openssl s_client -connecteinige Informationen bekommen. Folgendes passiert, wenn ich auf den node.js-Server zugreife (aus Datenschutzgründen etwas geändert):

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 --- 

Und was passiert, wenn ich versuche, einen TLS-Socket für Weechats Relais zu öffnen:

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 --- 

Wenn ich dies richtig gelesen habe, sendet Weechat anscheinend kein Zwischenzertifikat, während node.js es ist. Und das ist wahrscheinlich kein Problem im Browser, da es mit diesem Zwischenzertifikat geliefert wird. Dies würde auch erklären, warum die Probleme mit der Verbindung zum Relais verschwinden, wenn ich das AlphaSSL-Zwischenzertifikat zu den Zertifikaten des Systems hinzufüge.

Ist meine Annahme richtig? Bedeutet das, dass Weechat einen Fehler hat? Ich bin relativ neu in Bezug auf Zertifizierungsstellen, Zertifikate usw., also lerne ich dieses Zeug immer noch.

0

1 Antwort auf die Frage

1
dv_

Kurz nachdem ich die Frage gestellt hatte, fand ich natürlich die Antwort. Ich bewahre es immer noch hier auf, damit andere daraus lernen können.

Die Antwort war, dass die .pem-Datei, die ich zu weechat hinzugefügt hatte, die beiden Zertifikate verkettet hatte, es jedoch einen Fehler gab - aus unbekannten Gründen war das Zwischenzertifikat dort ungültig. Ich habe die verkettete PEM-Datei mit neu erstellt cat my-domain.x509.crt intermediate.crt my-domain.priv.key > relay.pem, und jetzt funktioniert es gut.