geschlossen. Diese Frage ist nicht zum Thema . Derzeit werden keine Antworten akzeptiert.

Kommentare

  • Dies scheint eher eine Frage für den Stapelüberlauf zu sein. Sehen. z.B. stackoverflow.com/questions/17143606/…
  • Es wäre sinnvoll, mit zu implementieren openssl api bietet so viele Funktionen wie möglich.

Antwort

Mit openssl ist dies sehr einfach.

Angenommen, foo.crt ist Ihre CRT-Datei. Anschließend druckt

$ openssl x509 -in foo.crt -text -noout 

alle erforderlichen Informationen (Aussteller, Schlüssel: Modul rsa und Exponent, Signaturalgorithmus usw.) im Textformat.

Wenn Sie

$ openssl x509 -in foo.crt -text -noout > foo.txt 

angeben, speichern Sie die vorherigen Informationen in der Datei foo.txt.

Um Ihre Frage zu beantworten

Können Sie mir sagen, wie ich aus dieser Datei einen öffentlichen Schlüssel extrahieren kann, der im hexadezimalen Format (Byte) verwendet werden kann?

Eine Möglichkeit, dies zu tun, besteht darin, zuerst den öffentlichen Schlüssel zu exportieren und ihn dann in die Hex-Form zu konvertieren.

 $ openssl x509 -in foo.crt -noout -pubkey > foo-public $ openssl rsa -noout -text -in foo-public -pubin > foo-public-hex 

Jetzt foo-public- hex enthält deinen pkey im hex-Format.

Dann hast du geschrieben

Ich weiß, dass in dieser Datei p, q und rest aber ist Ich möchte, dass der endgültige öffentliche Schlüssel verwendet werden kann.

Ich bin nicht sicher, ob ich Ihnen folge … der private Schlüssel befindet sich nicht in der CRT-Datei, sondern in Die Schlüsseldatei und der Server werden nicht an den Client gesendet.

Wenn foo.key Ihr privater Schlüssel ist, geben Sie ihn an

$openssl rsa -noout -text -in foo.key 

Sie sehen den privaten Exponenten und die Primzahlen p, q in hexadezimaler Form.

Kommentare

  • Nitpick: Die Befehlszeile openssl ist für alle Unixe und Windows verfügbar und funktioniert unter allen, nicht nur unter LInux. VMS ist ein bisschen anders, aber nicht viel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.