PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache/httpsd: welche Datei bei Option SSLCertificateKeyFile?



m.o.o.
27.07.09, 00:11
Hallo,

ich experimentiere gerade mit Apache 2.2.11, genauer gesagt mit HTTPS.
Für diesen Zeck wollte ich mir selbst ein Zertifikat ausstellen um die verschlüsselte Kommunikation zu testen.
Ich habe mir also zuerst einen Private-Key generiert


openssl genrsa -out server.pem

und dann die CSR erstellt mit


openssl req -new -key server.pem -out server.csr

Anschließend muss die CSR unterschrieben werden, deshalb spiele ich CA und erstelle mir einen neuen Private-Key mit


openssl genrsa -out ca_key.pem

und erzeuge das signierte X.509-Zertifikat mit


openssl x509 -req -days 60 -in server.csr -signkey ca_key.pem -out server.crt


Die erzeugten Dateien binde ich so in Apache ein:


SSLCertificateFile /etc/apache/conf/server.crt
SSLCertificateKeyFile /etc/apache/conf/server.pem


Dann versuche ich den Server mit apachectl zu starten, was mit einem


[Sun Jul 26 23:53:33 2009] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:
X509_check_private_key:key values mismatch

quittiert wird. Setze ich bei der Option "SSLCertificateKeyFile" die Datei "ca_key.pem" ein, dann startet der Server und die verschlüsselte Kommunikation funktioniert.

Warum ist das so? Wenn ich mein CSR-Dokument an die CA zum Signieren sende, dann unterschreibt die das ja mit ihrem privaten Schlüssel, d.h. der steht mir nicht zur Verfügung und ich kann ihn dann nicht wie oben in meine Konfiguration einbinden. Oder liefert die CA zusätzlich zum Zertifikat auch einen (neuen) privaten Schlüssel für mich mit? Falls das so ist: für was brauche ich dann noch den Schlüssel "server.pem"? Dient dieser nur zur sicheren Übertragung (bzw. zur Gewährleistung der Authentizität bei der Übertragung) des CSR-Dokuments an die CA?

Gruß, Florian

m.o.o.
27.07.09, 11:55
Hab jetzt den Fehler gefunden: die CA unterschreibt nicht nur einfach mit ihrem geheimen Schlüssel (das ist sogar falsch, weil so im Schritt CSR -> Zertifikat mein öffentliche Schlüssel, der vorher in der CSR stand, durch den öffentlichen Schlüssel der CA ausgetauscht wird; deshalb auch die Fehlermeldung von Apache), sondern gibt beim openssl-Aufruf zum Unterzeichnen noch ihr eigenes Zertifikat an; d. h. die CA muss sich erstmal einen geheimen Schlüssel generieren und dann noch ein dazu passendes Zertifikat.

Gruß, Florian