Mehrere SSL-Zertifikate mit Stunnel

Mehrere SSL-Zertifikate mit Stunnel

Ich habe zwei PositiveSSL-Zertifikate (separat) gekauft, eines für manager.domain.com und ein weiteres für domain.com. Ursprünglich brauchte ich nur manager.domain.com mit SSL, aber dann musste ich SSL auf domain.com verwenden. Mit dem einen SSL-Zertifikat für domain.manager.com funktioniert alles einwandfrei, aber wenn ich die Daten des zweiten Zertifikats zur PEM-Datei hinzufüge, versucht domain.com, die Überprüfung mit dem Zertifikat von domain.com durchzuführen, und das funktioniert nicht. Wie kann ich zwei SSL-Zertifikate mit derselben Instanz von Stunnel haben? Ich denke über Nginx nach, und auch Varnish, falls das nützlich ist.

Hier ist die Stunnel-Konfigurationsdatei und das Format meiner PEM-Datei. Hinweis: Dies funktioniert problemlos für domain.manager.com (das ist das erste Zertifikat).

cert = /etc/ssl/all.pem
debug = 5
output = /var/log/stunnel4/stunnel.log

[https]
accept  = 443
connect = 80

Und das Format für all.pem. Das erste Zertifikat ist für manager.domain.com (was funktioniert), das zweite für domain.com, was nicht funktioniert. (Der private Schlüssel wurde mit manager.domain.com generiert):

-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkahkiG9w0BAQEFAASCBKkwggSl444AAoIBAQDz/pbylQ5Ci6ji
END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFCjCCA/gdfwIBAgIRAL9QPhnM0h2smePkZ8ToSBMwDdfgKoZIhvcNAQEFBQAw
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFCjCCA/gdfwIBAgIRAL9QPhnM0h2smePkZ8ToSBMwDdfgKoZIhvcNAQEFBQAw
-----END CERTIFICATE-----

Ich habe auch versucht, die Zertifikate zu trennen und in einen CApath zu packen

CApath = /etc/stunnel/certs/
debug = 5
output = /var/log/stunnel4/stunnel.log

[https]
accept  = 443
connect = 80

Ich verwende die Befehle

openssl x509 -hash -noout -in domain.pem
openssl x509 -hash -noout -in manager.domain.pem

um die Dateien zu erstellen, die in das Verzeichnis /etc/stunnel/certs/ abgelegt werden sollen. Beim Neustartversuch gibt stunnel jedoch den folgenden Fehler aus:

Restarting SSL tunnels: No limit detected for the number of clients
signal_pipe: FD=3 allocated (non-blocking mode)
signal_pipe: FD=4 allocated (non-blocking mode)
stunnel 4.42 on i686-pc-linux-gnu platform
Compiled with OpenSSL 1.0.0e 6 Sep 2011
Running  with OpenSSL 1.0.1 14 Mar 2012
Update OpenSSL shared libraries or rebuild stunnel
Threading:PTHREAD SSL:ENGINE Auth:LIBWRAP Sockets:POLL,IPv6
Reading configuration from file /etc/stunnel/https.conf
PRNG seeded successfully
Line 8: End of section https: SSL server needs a certificate
str_stats: 53 block(s), 3974 byte(s)
[Failed: /etc/stunnel/https.conf]
You should check that you have specified the pid= in you configuration file

Die mir für manager.domain.com bereitgestellten Dateien sind

Root CA Certificate - AddTrustExternalCARoot.crt
Intermediate CA Certificate - PositiveSSLCA2.crt
Your PositiveSSL Certificate - manager_domain_com.crt

und dasselbe gilt für domain.com.

Kann mir hierbei bitte jemand helfen?

Antwort1

Sie müssen TLS SNI verwenden, um zwei verschiedene Zertifikate auf demselben Abhörport präsentieren zu können. Beachten Sie, dass einige Clients, insbesondere die meisten Browser unter Windows XP, SNI nicht unterstützen.

Siehe die sniOption in der Dokumentation. Teilen Sie Ihre Zertifikate in verschiedene Dateien auf (für beide öffentlichen Zertifikate wird derselbe private Schlüssel verwendet):

[https]
cert = /etc/ssl/domain.com.pem
accept  = 443
connect = 80

[domain]
sni = https:domain.com
sni = https:www.domain.com
cert = /etc/ssl/domain.com.pem
connect = 80

[manager]
sni = https:manager.domain.com
cert = /etc/ssl/manager.domain.com.pem
connect = 80

verwandte Informationen