
Ich habe ein OpenSSl-Zertifikat. Ich brauche auch den privaten Schlüssel. Mir wurde gesagt, dass er sich irgendwo auf dem Server befindet, und tatsächlich habe ich mehrere SSL-Schlüsseldateien gefunden.
Bevor ich sie alle mit roher Gewalt ausprobiere: Gibt es eine Möglichkeit, am Terminal herauszufinden, ob zum Erstellen des Zertifikats ein privater Schlüssel verwendet wurde?
Antwort1
Die klassische Referenz hierfür istdiese FAQin den Online-Apache-Dokumenten.
In diesem Dokument md5
wird ein Modul verwendet, weil
Da der öffentliche Exponent normalerweise 65537 ist und es schwierig ist, visuell zu überprüfen, ob die langen Modulnummern gleich sind, können Sie den folgenden Ansatz verwenden
Das gibt:
$ openssl rsa -noout -modulus -in key.pem.decrypted | openssl md5
(stdin)= 9fxxfoobar558d9xx0045a89467d2bxx
$ openssl x509 -noout -modulus -in crt.pem | openssl md5
(stdin)= 9fxxfoobar558d9xx0045a89467d2bxx
Ich schlage die Verwendung einer Prozesssubstitution vor, um einen visuellen Vergleich des Moduls zu vermeiden:
$ diff \
<(openssl x509 -noout -modulus -in cert.pem) \
<(openssl rsa -noout -modulus -in key.pem.decrypted)
Wenn die Ausgabe leer ist, stimmt der private Schlüssel mit dem Zertifikat überein.
Dies ist lediglich eine bequemere Möglichkeit zum Vergleichen der Zeichenfolgen als die in der Antwort von Andrew Schulman, die natürlich ebenfalls gültig ist.
Eine weitere ReferenzHier.
Antwort2
Um zu überprüfen, ob eine Zertifikatsdatei den öffentlichen Schlüssel zertifiziert, der einer bestimmten privaten Schlüsseldatei zugeordnet ist, vergleichen Sie die jeweils zugehörigen öffentlichen Schlüssel:
openssl rsa -in KEYFILE -pubout
openssl x509 -in CERTFILE -pubkey -noout
Eine Übereinstimmung zwischen Zertifikat und privatem Schlüssel findet genau dann statt, wenn die öffentlichen Schlüssel identisch sind.