"Öffentliches Schlüsselzertifikat und privater Schlüssel stimmen nicht überein", wenn von Godaddy ausgestelltes Zertifikat verwendet wird [geschlossen]

86

Ich versuche, ein GoDaddy-SSL-Zertifikat auf einem neuen Load Balancer zu installieren, den ich in Amazon AWS einrichte. Ich habe das Zertifikat ursprünglich bei Godaddy mit dem Programm keytool für die direkte Installation auf einem Glassfish 3.1-Server (Amazon Linux Ami) erstellt. Ich hatte keine Probleme, dieses Setup direkt auf den Server zu bekommen. Ich muss jetzt das Zertifikat vom Webserver auf den neuen Load Balancer verschieben. Amazon verlangt, dass der private Schlüssel und die Zertifikate im PEM-Format vorliegen. Daher habe ich bei GoDaddy das Tool "Rekey" verwendet, um neue Zertifikate zu erstellen. Wenn ich diese im Load Balancer-Setup-Bildschirm der AWS Mgmt Console lade, wird die Fehlermeldung angezeigt: "Zertifikat für öffentlichen Schlüssel und privater Schlüssel 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 sende dann die CSR-Datei während des "Rekey" -Prozesses an GoDaddy. Sobald der Neuschlüssel abgeschlossen ist, lade ich die 2 neu erstellten Zertifikate herunter (apps.mydomain.com.crt & gd_bundle.crt). Ich lade sie herunter und wähle (Apache) als Servertyp (ich habe auch "other" und "Cpanel" ausprobiert, aber alle scheinen gleich zu sein).

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

$ 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 dem das SSL-Zertifikat eingerichtet werden soll:

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

Wenn ich auf die Schaltfläche "Weiter" klicke, wird die Fehlermeldung "Fehler: Öffentliches Schlüsselzertifikat und privater Schlüssel stimmen nicht überein." Angezeigt.

- Gibt es eine Möglichkeit, um zu testen, ob ich eine gültige Fehlermeldung von Amazon erhalte? Es scheint mir seltsam, dass die Schlüssel nicht übereinstimmen würden, wenn ich den Anweisungen von GoDaddy ziemlich genau folge.

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

Ich gehe auch davon aus, dass die von GoDaddy heruntergeladenen CRT-Dateien im PEM-Format vorliegen, bin mir aber nicht sicher, wie ich dies überprüfen soll.

Irgendwelche Ideen?

Felby
quelle
1
Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Siehe Welche Themen kann ich hier in der Hilfe erfragen? Vielleicht wäre Super User ein besserer Ort, um zu fragen. Siehe auch Wo poste ich Fragen zu Dev Ops? .
JWW
Dieser Beitrag ist über 3 Jahre alt. Warum sollte ich ihn jetzt verschieben?
Felby
1
Felby - Leute sagen oft: "... aber sieh dir diesen und jenen Beitrag an". Es reicht also nicht aus, neue Beiträge aufgeräumt zu halten - wir müssen zumindest auch eine Nachricht zu alten Beiträgen erhalten. Und für was es wert ist, denke ich nicht, dass es eine schlechte Frage ist. Es ist nur ein bisschen vom Thema für Stack Overflow.
JWW
@Felby sollten Sie diese Antwort für die Annahme berücksichtigen . Es ist das, wonach die meisten Entwickler suchen, wenn dieses Problem bei AWS auftritt.
Noel Baron

Antworten:

61

Für mich war es ein einfacher zweistufiger Schritt:

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

    openssl rsa -in yourdomain.key -outform PEM

  2. Konvertieren Sie das Zertifikat und das Zertifikatspaket in PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

Jonathon Hill
quelle
1
Diese besondere Antwort hat mir wirklich geholfen. Danke Jonathan. Für die Aufzeichnung ist yourdomain.crt der öffentliche Schlüssel, das Zertifikat, das Sie von Ihrem Provider erhalten haben (könnte auch ein .cer sein)
user_v
Ich WARNING: can't open config file: /etc/pki/tls/openssl.cnf
bekomme
2
@tq - Einige OpenSSL-Befehle haben ebenfalls eine -configOption. Verwenden Sie diese Option, um den Pfad zu der von Ihnen verwendeten Konfigurationsdatei anzugeben.
JWW
@felby Sollte diese als akzeptierte Antwort markieren. Dies ist die einzige Antwort, die bei iOS-Geräten kein SSL-Vertrauensproblem verursacht.
Noel Baron
Diese Antwort ist bei Wildcard-SSL sehr hilfreich. Sie müssen sowohl die Datei domain.crt als auch die Datei gd_bundle.crt konvertieren.
Ducle
40

Nur für die Aufzeichnung und alle anderen, die versuchen, es herauszufinden:

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

yourdomain.crt -> öffentlicher Schlüssel

gd_bundle.crt -> Zertifikatskette

und du bist gut zu gehen :)

Chris J.
quelle
2
OMG, ich habe so viele Stunden mit Problemen verloren, du hast mich gerade gerettet! Ich habe ein RapidSSL-Zertifikat gekauft: Der Trick bestand darin, 1) den privaten Schlüssel wie hier vorgeschlagen zu konvertieren und 2) die Reihenfolge der Zertifikate in der von RapidSSL bereitgestellten Zertifikatkette umzukehren. Vielen Dank!
MiniQuark
fragt mich immer wieder nach einem Passwort, aber mein Rapidssl-Zertifikat wurde ohne eines erstellt
tq
Der Befehl sudo fragt nach einem Administratorkennwort, es sei denn, Ihr Konto ist so eingerichtet, dass über einige verschiedene Methoden kein Kennwort erforderlich ist. Ist das das Passwort, auf das Sie sich auch beziehen?
Chris J
Um etwas hinzuzufügen, wo es von jemandem gefunden werden kann, der es benötigt, haben wir ein Host Gator-Zertifikat von einem Client erhalten, und es schien ziemlich gut eingerichtet zu sein - keine PEM-Konvertierungen, und das CA-Bundle wurde bereits miteinander verkettet. Würde aber nicht in Amazon gehen. Bei der Reihenfolge der Zertifikate im Bundle war es genauso. Durch Umkehren der Reihenfolge ging es hinein und funktionierte.
CargoMeister
23

Anscheinend war das Problem die Art und Weise, wie ich den Inhalt des Schlüssels und der Zertifikate in die AWS Management-Konsole kopierte. Ich habe einen Ubuntu-Desktop verwendet, der in Virtual Box auf einem Windows 7-Desktop ausgeführt wird. Kopieren Sie die Werte von einem gedit-Bildschirm und fügen Sie sie in den Browser ein, der auf der Windows-Box ausgeführt wird. Nachdem ich die Schlüssel- und Zertifizierungsdateien in derselben Box wie der Webbrowser (in diesem Fall Windows) geöffnet hatte, gingen die Zertifikate einwandfrei durch. Ich vermute, dass einige Teile der Datei nicht korrekt verarbeitet werden, wenn die gemeinsam genutzte Zwischenablage zwischen Virtual Box-Client und Host verwendet wird. Fall abgeschlossen.

Felby
quelle
Können Sie Ihre Antwort akzeptieren, damit die Leute wissen, dass dies behoben wurde?
Phil Sturgeon
2
Seltsam, ich dachte, ich hätte das schon vor langer Zeit akzeptiert ...
Felby
7

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

Dann haben wir versucht, die PEM-Codes noch einmal einzugeben, aber diesmal haben wir darauf geachtet, einmal die Eingabetaste zu drücken und sicherzustellen, dass sich der Cursor am Ende jedes Fensters in einer leeren Zeile befand. Dann haben wir es gespeichert. ES FUNKTIONIERTE.

Dies hat unser Problem gelöst und könnte es für andere lösen.

PlateSpinner
quelle
1

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

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

Christopher Stevenson
quelle
0

Ich kann Ihnen eine alternative Lösung und Informationen vorschlagen. Im Allgemeinen haben alle Zertifikate das PEM-Dateiformat. Sie können einfach einen Notizblock oder einen beliebigen Texteditor öffnen und die empfangenen Dateien im CRT-Dateiformat ziehen. Dies wird normalerweise als .PEM-Datei bezeichnet. Wenn das Zertifikat in Ihr Keytool geladen ist, können Sie das Zertifikat als pfx-Datei aus dem Keytool exportieren. Anschließend können Sie die pfx-Datei vom privaten Schlüssel von der pfx-Datei trennen. Da die pfx-Datei die Kombination Ihres Zertifikats und des privaten Schlüssels ist. Sie können die private Schlüsseldatei also separat abrufen und auf Ihrem Amazon AWS 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 es gibt eine Möglichkeit, Ihr Zertifikat erneut ausstellen zu lassen.

Rajan
quelle