Ich versuche, ein privat-öffentliches Schlüsselpaar zu generieren und den öffentlichen Schlüssel in ein Zertifikat zu konvertieren, das hinzugefügt werden kann in meinen Truststore.
So generieren Sie einen privaten öffentlichen &: openssl rsa -in private.pem -outform PEM -pubout -out public_key.pem
Jetzt ich Ich versuche dies in ein Zertifikat zu konvertieren:
openssl x509 -outform der -in public_key.pem -out public.cer
Aber ich erhalte eine Fehlermeldung:
7962:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.30.2/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE
Alle Tutorials zeigen, dass ich pem in crt konvertieren muss, bevor ich es einem Truststore hinzufüge.
Antwort
Sie können nicht “ konvertieren „einen öffentlichen Schlüssel in ein Zertifikat. Ein Zertifikat enthält den öffentlichen Schlüssel, aber auch weitere Informationen wie den Betreff, den Aussteller, wann das Zertifikat gültig ist usw. Und ein Zertifikat wird vom Aussteller signiert. Daher müssen Sie stattdessen eine Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) erstellen, die den öffentlichen Schlüssel, aber auch alle zusätzlichen Informationen enthält. Diese CSR muss dann von einer Zertifizierungsstelle (CA) signiert werden, die dann zum Zertifikat führt.
Informationen zum Erstellen eines einfachen selbstsignierten Zertifikats, dem kein Browser vertraut, finden Sie unter Wie erstelle ich ein selbstsigniertes Zertifikat mit openssl? .
Kommentare
- In diesem Beispiel: openssl req -x509 -newkey rsa: 4096 -keyout key.pem -out cert.pem -days 365 key.pem enthält sowohl privaten als auch öffentlichen Schlüssel?
- @ user1692342: Ich ' bin mir nicht sicher, wie sich die Frage im Kommentar auf die ursprüngliche Frage bezieht. Aber: key.pem ist der private Schlüssel, der den öffentlichen Schlüssel enthält, und der öffentliche Schlüssel ist auch in cert.pem enthalten.
Antwort
Sie können einen öffentlichen Schlüssel nicht in ein Zertifikat konvertieren.
Die ursprünglichen Befehle funktionieren nicht, da die PEM-Codierung / das Dateiformat voraussichtlich den verschlüsselten Zertifikatstext wie folgt enthält:
—– BEGIN CERTIFICATE —–
Zertifikatdaten hier
—– END CERTIFICATE —–
Wenn Sie also die ursprüngliche .PEM-Datei anzeigen und etwas anderes sehen (wie BEGIN RSA …), ist dies falsch.
Nun entsprechend dem Thread-Titel, den Sie haben versuchen, eine PEM in ein CRT-Dateiformat zu konvertieren. Beachten Sie, dass x509-Zertifikate in zwei Codierungen vorliegen können – DER und PEM. PEM kann auch in einem .CRT-, .CER- und auch .PEM-Format vorliegen.
Wenn Sie diesen Fehler sehen, besteht daher auch die Möglichkeit, dass Sie ein DER-codiertes Zertifikat als PEM-codiertes Zertifikat behandeln. Sie können versuchen, festzustellen, ob es tatsächlich DER-codiert ist, indem Sie den Anweisungen auf dieser -Seite folgen.