it-swarm.com.de

"Zertifikat mit öffentlichem Schlüssel und privater Schlüssel stimmen nicht überein", wenn ein von Godaddy ausgestelltes Zertifikat verwendet wird

Ich versuche, ein GoDaddy-SSL-Zertifikat auf einem neuen Lastverteiler zu installieren, den ich auf Amazon AWS eingerichtet habe. Ich habe das Zertifikat ursprünglich bei Godaddy mit dem keytool-Programm für die direkte Installation auf einem Glassfish 3.1-Server (Amazon linux AMI) erstellt. Ich hatte keine Probleme, dieses Setup direkt auf dem Server zu bekommen. Ich muss jetzt das Zertifikat vom Webserver auf den neuen Lastenausgleich verschieben. Amazon erfordert, dass der private Schlüssel und die Zertifikate im PEM-Format vorliegen. Daher habe ich bei GoDaddy das "rekey" -Tool zum Erstellen neuer Zertifikate verwendet. Wenn ich diese in den AWS Mgmt Console-Bildschirm "Load Balancer Setup" lade, wird die Fehlermeldung angezeigt: "Public Key Certificate und Private Key stimmen nicht überein."

So erstelle ich die Schlüssel:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

Ich übermittle dann die CSR-Datei während des "Rekey" -Prozesses an GoDaddy. Sobald die erneute Eingabe abgeschlossen ist, lade ich die 2 neu erstellten Zertifikate herunter (apps.mydomain.com.crt & Gd_bundle.crt). Ich lade sie herunter, indem Sie (Apache) als Server-Typ auswählen (ich habe auch "other" und "Cpanel" ausprobiert, aber alle sehen gleich aus).

An diesem Punkt entferne ich die Verschlüsselung aus der Datei private.key mit dem folgenden Befehl: 

$ openssl rsa -in private.key -out private.pem

An diesem Punkt gehe ich zurück in die AWS Mgmt-Konsole, erstelle den Load Balancer, füge die sichere Serverumleitung hinzu und füge den Inhalt der folgenden Dateien in die entsprechenden Felder auf dem Bildschirm ein, in denen das Setup des SSL-Zertifikats verlangt wird:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
Gd_bundle.crt --> Certificate Chain

Wenn ich auf "Weiter" klicke, erhalte ich die Fehlermeldung "Fehler: Zertifikat des öffentlichen Schlüssels und der private Schlüssel stimmen nicht überein."

Gibt es eine Möglichkeit, die ich testen kann, dass ich eine gültige Fehlermeldung von Amazon bekomme? Es kommt mir seltsam vor, dass die Tasten nicht übereinstimmen, wenn ich GoDaddys Anweisungen ziemlich genau befolge.

Ich habe vor dem Erstellen der CSR-Datei versucht, die private.key-Datei ohne RSA-Verschlüsselung zu erstellen, und das scheint keinen Unterschied zu machen.

Ich gehe auch davon aus, dass die .crt-Dateien, die ich von GoDaddy herunterlade, im .PEM-Format vorliegen, aber ich bin nicht sicher, wie ich das überprüfen kann.

Irgendwelche Ideen?

84
Felby

Anscheinend war das Problem die Art und Weise, in der ich den Inhalt der Schlüssel und Zertifikate in die AWS Management Console kopierte. Ich habe einen Ubuntu-Desktop verwendet, der in Virtual Box auf einem Windows 7-Desktop ausgeführt wird. Kopieren und Einfügen der Werte aus einem gedit-Bildschirm in den auf der Windows-Box ausgeführten Browser. Sobald ich die Schlüssel- und cert-Dateien auf derselben Box wie der Webbrowser (in diesem Fall Windows) geöffnet habe, haben die Zertifikate einwandfrei funktioniert. Ich schätze, einige Teile der Datei werden nicht korrekt wiedergegeben, wenn Sie die gemeinsam genutzte Zwischenablage zwischen dem Virtual Box-Client und dem Host verwenden. Fall abgeschlossen.

23
Felby

Für mich waren es zwei einfache Schritte:

  1. Konvertieren Sie den privaten Schlüssel in PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. Konvertieren Sie das Zertifikat und das Zertifikatbündel in PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

61
Jonathon Hill

Nur für die Platte und alle anderen, die es herausfinden wollen:

ihreDomain.Taste -> Terminalbefehl: Sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> privater Schlüssel

ihreDomain.crt -> öffentlicher Schlüssel

Gd_bundle.crt -> Zertifikatskette

und du bist gut zu gehen :)

38
C Jones

Wir haben eine alternative Lösung für dieses Problem gefunden. Wir hatten die gleichen Symptome mit dem gleichen Fehler. 

Dann haben wir noch einmal versucht, die Pem-Codes erneut einzugeben. Diesmal haben wir jedoch einmal die Eingabetaste gedrückt und sichergestellt, dass sich der Cursor am Ende jedes Fensters in einer leeren Zeile befindet. Dann haben wir es gespeichert.

Dies hat unser Problem gelöst, also könnte es für andere gelöst werden.

7
PlateSpinner

Ein kleines Problem. Ich verwende eine Windows-Box (Win 7 Pro), und als ich den Windows-Port von OpenSSL verwendete, hatten die ausgegebenen Dateien Zeilenendezeichen im Unix-Stil (LF). 

Ich musste die Datei für das Hochladen des privaten Schlüssels in den Windows-Stil (CRLF) konvertieren.

Ich kann Sie mit einer alternativen Lösung und einer Information an Sie vorschlagen. Allgemein sind alle Zertifikate im PEM-Dateiformat. Sie können einfach einen Notizblock oder einen beliebigen Texteditor öffnen und die empfangenen Dateien im .crt-Dateiformat ziehen. Diese wird normalerweise als .PEM-Datei bezeichnet. Wenn das Zertifikat in Ihrem Keytool geladen ist, können Sie das Zertifikat als Pfx-Datei aus Keytool exportieren. Dann können Sie die pfx-Datei vom privaten Schlüssel von der pfx-Datei trennen. Da es sich bei der pfx-Datei um eine Kombination aus Zertifikat und privatem Schlüssel handelt, können Sie die private Schlüsseldatei separat herunterladen und auf Ihren Amazon-Dateien verwenden. 

Ich vermute, dass es eine andere Möglichkeit gibt, das Zertifikat zu installieren. Möglicherweise können Sie sich an die Zertifizierungsstelle wenden, und Sie haben die Möglichkeit, Ihr Zertifikat erneut auszustellen.

0
Rajan