2013-06-17 8 views
26

Ich verwende den folgenden openssl-Befehl zum Speichern meines öffentlichen Schlüssels in einer .pem-Datei.So speichern Sie den öffentlichen Schlüssel aus einem Zertifikat im .pem-Format

openssl> x509 -in E:/mycert.pem -pubkey -out E:/mypubkey.pem 

Aber wenn ich versuche, diesen Befehl zu verwenden, wird die gesamte Zertifikat Info in der mypubkey.pem Datei zu speichern.

Ich habe gesehen, dass ich meine öffentlichen Schlüssel speichern können

openssl> x509 -pubkey -noout -in cert.pem > pubkey.pem 

aber es ist ein Fehler zu werfen. Ich kann den Operator> nicht verwenden.

+0

Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. Siehe auch [Wo veröffentliche ich Fragen zu Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

Antwort

74

Es gibt mehrere Möglichkeiten, dies zu tun.

Zuerst statt OpenSSL Eingabeaufforderung Funktion aktiviert wird, nur alles auf einer Kommandozeile aus der Eingabeaufforderung von Windows eingeben:

E:\> openssl x509 -pubkey -noout -in cert.pem > pubkey.pem 

Wenn aus irgendeinem Grunde müssen Sie die openssl Eingabeaufforderung verwenden, geben Sie einfach alles bis zum ">". Dann druckt OpenSSL die öffentlichen Schlüsselinformationen auf dem Bildschirm aus. Sie können dies dann kopieren und in eine Datei namens pubkey.pem einfügen.

openssl> x509 -pubkey -noout -in cert.pem 

Die Ausgabe wird in etwa so aussehen:

-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAryQICCl6NZ5gDKrnSztO 
3Hy8PEUcuyvg/ikC+VcIo2SFFSf18a3IMYldIugqqqZCs4/4uVW3sbdLs/6PfgdX 
7O9D22ZiFWHPYA2k2N744MNiCD1UE+tJyllUhSblK48bn+v1oZHCM0nYQ2NqUkvS 
j+hwUU3RiWl7x3D2s9wSdNt7XUtW05a/FXehsPSiJfKvHJJnGOX0BgTvkLnkAOTd 
OrUZ/wK69Dzu4IvrN4vs9Nes8vbwPa/ddZEzGR0cQMt0JBkhk9kU/qwqUseP1QRJ 
5I1jR4g8aYPL/ke9K35PxZWuDp3U0UPAZ3PjFAh+5T+fc7gzCs9dPzSHloruU+gl 
FQIDAQAB 
-----END PUBLIC KEY----- 
+0

Ty für die Antwort. Der zweite Ansatz ist akzeptabel. Aber ich möchte es über die Eingabeaufforderung selbst speichern. Ich habe openssl nicht auf meinem System installiert. Ich verwende die Binaries direkt, um die Openssl-Eingabeaufforderung auszuführen. Die Version, die ich verwende, ist openssl-0.9.8k_WIN32. SO, wenn ich versuche, den 1. Befehl in Windows-Eingabeaufforderung auszuführen, wird ein Fehler angezeigt. – Ankit

+1

Welchen Fehler sehen Sie, wenn Sie den 1. Befehl ausführen? Hast du die openssl-Version hier -> [https://code.google.com/p/openssl-for-windows/](https://code.google.com/p/openssl-for-windows/) oder? irgendwo anders? – gtrig

+0

Ja, ich verwende die gleiche OpenSSL-Version. – Ankit

5

Sie nicht > im OpenSSL interaktiven Eingabeaufforderung verwenden können. Verwenden Sie stattdessen das Argument -out, um die Ausgabe in eine Datei zu schreiben. Z.B.

openssl> x509 -pubkey -noout -in cert.pem -out pubkey.pem 
1

wenn es ein RSA-Schlüssel

openssl rsa -pubout -in my_rsa_key.pem 

, wenn Sie es in ein Format für openssh benötigen, bitte Use RSA private key to generate public key?

Hinweis sehen, dass die öffentlichen Schlüssel aus den privaten Schlüssel und SSH-Anwendungen erzeugt wird, die Identitätsdatei (private Schlüsseldatei) zum Generieren und Senden des öffentlichen Schlüssels an den Server und Entschlüsseln des verschlüsselten Tokens vom Server über den privaten Schlüssel in der Identitätsdatei.