it-swarm.com.de

Konvertieren Sie den traditionellen privaten PEM-Schlüssel in den privaten PKCS8-Schlüssel

Ich habe eine PEM-Datei mit einem Zertifikat und Pub/Private Keys erhalten. Insbesondere enthält es die Überschriften

-----BEGIN CERTIFICATE-----   
-----END CERTIFICATE-----   
-----BEGIN RSA PRIVATE KEY-----   
-----END RSA PRIVATE KEY-----   
-----BEGIN RSA PUBLIC KEY-----   
-----END RSA PUBLIC KEY-----

in dieser bestimmten Reihenfolge.

Mein Verständnis ist ohne eine Überschrift nach dem BEGIN RSA PRIVATE KEY Header, dass diese PEM-Datei einen privaten Schlüssel im herkömmlichen Format (PKCS1) ohne Verschlüsselung enthält.

Ich muss diesen privaten Schlüssel in ein DER-codiertes, unverschlüsseltes PKCS8-Format konvertieren, um ihn mit Java= Servercode, insbesondere PKCS8EncodedKeySpec) verwenden zu können. Ich habe OpenSSL sowohl mit den Befehlen rsa als auch mit pkcs8 ausprobiert, aber ohne Erfolg Es gibt keine spezielle Notwendigkeit, openssl zu verwenden, wenn es etwas Einfacheres gibt.

Speziell:

openssl rsa -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem
openssl rsa -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem -pubin openssl pkcs8 -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem -nocrypt

Ich habe auch versucht, inform und outform anzugeben, ohne Erfolg.

[email protected]:~/TestCerts$ openssl rsa -in IServer_Key.pem -out IServer_Key.pkcs8.pem -pubin 
unable to load Public Key 
5925:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:
Expecting: PUBLIC KEY

[email protected]:~/TestCerts$ openssl rsa -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem 
unable to load Private Key 
5993:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1316: 
5993:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:828:
5993:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:748:Field=n, Type=RSA 
5993:error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib:d2i_pr.c:99: 
5993:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:125:

[email protected]:~/TestCerts$ openssl pkcs8 -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem -nocrypt 
Error decrypting key 
6022:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:
Expecting: PRIVATE KEY

Jede Hilfe wäre an dieser Stelle sehr dankbar.

36
Peter Oehlert

Versuchen Sie es mit dem folgenden Befehl. Ich habe es nicht ausprobiert, aber ich denke, es sollte funktionieren.

openssl pkcs8 -topk8 -inform PEM -outform DER -in filename -out filename -nocrypt
59
Nilesh

So konvertieren Sie den privaten Schlüssel mit openssl von PKCS # 1 nach PKCS # 8:

# openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in pkcs1.key -out pkcs8.key

Das funktioniert, solange Sie den PKCS # 1-Schlüssel in PEM (Textformat) haben, wie in der Frage beschrieben.

28