Apache SSL-Konfiguration mit vertrauenswürdigen Zertifikaten

425
Yaerox

Zum ersten Mal beschäftige ich mich mit SSL. Ich würde gerne wissen, ob ich das richtig verstanden habe oder nicht.
Ich erstelle selbst signierte Client-Zertifikate mit einer selbst erstellten CA my-own-CA.crt .

Wenn ich ein Server-Zertifikat eines vertrauenswürdigen CA kaufen, erhalte ich eine
SSL-Zertifikat-Datei TeleSec-server.crt
SSL-Zertifikat-Kette-File TeleSec-ca.crt

und ich habe bereits mein
SSL-Zertifikat-Key-Datei meine -server.key

Nun zu meiner apache2-Konfiguration:

SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /somepath/telesec-server.crt SSLCertificateKeyFile /somepath/my-server.key SSLCertificateChainFile /somepath/telesec-ca.crt  # THIS IS THE IMPORTANT PART FOR ME NOW SSLCACertificatePath /somepath SSLCACertificateFile /somepath/my-own-ca.crt  SSLVerifyClient require SSLVerifyDepth 10  <Location /> SSLRequire % in {"1234567890"} </Location> 

Kann ich mit dieser Konfiguration mein selbst signiertes Client-Zertifikat verwenden, um mithilfe eines vertrauenswürdigen Server-Zertifikats auf meine Website zuzugreifen?

Im Moment habe ich das Server-Zertifikat selbst signiert. Benutzer, die über diese Client-Zertifikate auf meine Website zugreifen, erhalten Sicherheitsnachrichten. Wird diese Nachricht verschwinden, wenn ich das vertrauenswürdige Serverzertifikat verwende?

Kann ich meine selbstsignierten Client-Zertifikate weiterhin verwenden? Meine Erwartung hier ist auch, dass den Benutzern ein sicherer Server angezeigt wird, sie können jedoch die von mir erstellten Zertifikate selbst verwenden. Dies würde bedeuten, dass die Apache - Konfigurationsoptionen:
SSLCACertificatePath und SSLCACertificateFile sind optionales Feld, das überprüfen (falls gesetzt), wenn das Client-Zertifikat, das auf dieser Option durch das Zertifikat signiert wird versucht, eine Verbindung, nicht wahr?

Ich muss das nur sicherstellen, weil ich in Kürze einige Server-Zertifikate kaufen werde, und ich möchte, dass diese Fragen beantwortet werden.

1

2 Antworten auf die Frage

1
grawity

Will this configuration allow me to use my self-signed client-certificate to get acces to my website, using a trusted server-certificate?

Yes. (Although your certificate isn't entirely self-signed; it was signed by a CA, even if it's a custom CA. Maybe a better term would be "locally issued" or "custom issued"?)

Note that you only need one of "CACertificatePath" and "CACertificateFile", preferably the latter.

Right now I'm having the server-certificate self signed. People accessing my website using those client-certificates getting some security messages. Will this message be gone when I use the trusted server-certificate?

Yes, that's exactly what the security message is about.

Ja, die korrekte Schreibweise fällt mir immer noch schwer. Das tut mir leid. Ich habe noch einmal in der Apache-Dokumentation nach den Optionen CACertificatePath und CACertificateFile gesucht. Diese Option kann alternativ und / oder zusätzlich zu SSLCACertificatePath verwendet werden. - Du hast recht. Danke für den Tipp. Yaerox vor 8 Jahren 0
@ Mike: Genauer gesagt, OpenSSL kann entweder eine gebündelte Datei oder ein "Hash-Verzeichnis" verwenden, während GnuTLS nur ein Paket mit einer einzigen Datei unterstützt. /// Apropos, beachten Sie, dass `SSLCertificateChainFile` ebenfalls veraltet ist - stattdessen sollte der Inhalt der" Kette "an Ihre Zertifikatsdatei angehängt werden. grawity vor 8 Jahren 0
1
jww

Da Sie über die Konfiguration sprechen, kann dies zu Problemen führen:

 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 

Es ist ein Müll aus den 1990ern oder 2000ern. In Chrome wird dadurch die gefürchtete Warnung Obsolete Cryptography ausgelöst.

Versuchen Sie stattdessen Folgendes. Sie werden keinen Unterschied bemerken, Benutzeragenten wie Chrome beschweren sich nicht und Tools wie SSL-Konfigurationsprüfgeräte beschweren sich nicht:

SSLProtocol -all +TLSv1.2 SSLCipherSuite HIGH:!aNULL:!kRSA:!MD5:!RC4 

Ich persönlich verwende SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2, aber wir haben auf unserer Website nur Daten von geringem Wert.

Schließlich können Sie die Verschlüsselungssuiten, die mit der SSLCipherSuiteDirektive mit OpenSSL verwendet werden könnten, in der Befehlszeile anzeigen:

$ openssl ciphers -v 'HIGH:!aNULL:!kRSA:!RC4:!MD5' ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1 ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1 SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(256) Mac=SHA1 SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(256) Mac=SHA1 SRP-AES-256-CBC-SHA SSLv3 Kx=SRP Au=SRP Enc=AES(256) Mac=SHA1 DH-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH/DSS Au=DH Enc=AESGCM(256) Mac=AEAD DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD DH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH/RSA Au=DH Enc=AESGCM(256) Mac=AEAD DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256 DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256 DH-RSA-AES256-SHA256 TLSv1.2 Kx=DH/RSA Au=DH Enc=AES(256) Mac=SHA256 DH-DSS-AES256-SHA256 TLSv1.2 Kx=DH/DSS Au=DH Enc=AES(256) Mac=SHA256 DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1 DH-RSA-AES256-SHA SSLv3 Kx=DH/RSA Au=DH Enc=AES(256) Mac=SHA1 DH-DSS-AES256-SHA SSLv3 Kx=DH/DSS Au=DH Enc=AES(256) Mac=SHA1 DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1 DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(256) Mac=SHA1 DH-RSA-CAMELLIA256-SHA SSLv3 Kx=DH/RSA Au=DH Enc=Camellia(256) Mac=SHA1 DH-DSS-CAMELLIA256-SHA SSLv3 Kx=DH/DSS Au=DH Enc=Camellia(256) Mac=SHA1 ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD ECDH-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA384 ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA384 ECDH-RSA-AES256-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA1 ECDH-ECDSA-AES256-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA1 PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1 ECDHE-ECDSA-AES128-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1 SRP-DSS-AES-128-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(128) Mac=SHA1 SRP-RSA-AES-128-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(128) Mac=SHA1 SRP-AES-128-CBC-SHA SSLv3 Kx=SRP Au=SRP Enc=AES(128) Mac=SHA1 DH-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH/DSS Au=DH Enc=AESGCM(128) Mac=AEAD DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(128) Mac=AEAD DH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH/RSA Au=DH Enc=AESGCM(128) Mac=AEAD DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256 DHE-DSS-AES128-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(128) Mac=SHA256 DH-RSA-AES128-SHA256 TLSv1.2 Kx=DH/RSA Au=DH Enc=AES(128) Mac=SHA256 DH-DSS-AES128-SHA256 TLSv1.2 Kx=DH/DSS Au=DH Enc=AES(128) Mac=SHA256 DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1 DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1 DH-RSA-AES128-SHA SSLv3 Kx=DH/RSA Au=DH Enc=AES(128) Mac=SHA1 DH-DSS-AES128-SHA SSLv3 Kx=DH/DSS Au=DH Enc=AES(128) Mac=SHA1 DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1 DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(128) Mac=SHA1 DH-RSA-CAMELLIA128-SHA SSLv3 Kx=DH/RSA Au=DH Enc=Camellia(128) Mac=SHA1 DH-DSS-CAMELLIA128-SHA SSLv3 Kx=DH/DSS Au=DH Enc=Camellia(128) Mac=SHA1 ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD ECDH-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA256 ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA256 ECDH-RSA-AES128-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA1 ECDH-ECDSA-AES128-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA1 PSK-AES128-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA1 ECDHE-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=RSA Enc=3DES(168) Mac=SHA1 ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=3DES(168) Mac=SHA1 SRP-DSS-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=3DES(168) Mac=SHA1 SRP-RSA-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=3DES(168) Mac=SHA1 SRP-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=SRP Enc=3DES(168) Mac=SHA1 EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1 EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1 DH-RSA-DES-CBC3-SHA SSLv3 Kx=DH/RSA Au=DH Enc=3DES(168) Mac=SHA1 DH-DSS-DES-CBC3-SHA SSLv3 Kx=DH/DSS Au=DH Enc=3DES(168) Mac=SHA1 ECDH-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=3DES(168) Mac=SHA1 ECDH-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=3DES(168) Mac=SHA1 PSK-3DES-EDE-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=3DES(168) Mac=SHA1 

Wenn Sie einen RSA-Schlüssel auf dem Server haben, werden andere Authentifizierungsmethoden wie DSS nicht angewendet. Und Sie können wahrscheinlich auch PSK und SRP entfernen. Du könntest also so etwas tun:

$ openssl ciphers -v 'HIGH:!aNULL:!kRSA:!RC4:!MD5:!DSS:!PSK:!SRP' 
Vielen Dank für die Antwort, ich werde die Sicherheitspunkte hier später noch einmal genauer betrachten. Jetzt mache ich noch ein paar Tests und werde in ein paar Tagen wieder an diesem speziellen Problem arbeiten. Yaerox vor 8 Jahren 0