Me han proporcionado un archivo PEM con un certificado y claves públicas/privadas. Específicamente incluye los encabezadosConvertir clave privada tradicional PEM a clave privada PKCS8
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
en ese orden específico.
Mi comprensión es que sin un encabezado después del encabezado BEGIN RSA PRIVATE KEY
que este archivo pem contiene una clave privada en el formato tradicional (PKCS1) sin cifrado.
Necesito convertir esta clave privada a un formato desencriptado PKCS8 con codificación DER para usar con el código del servidor de Java, específicamente PKCS8EncodedKeySpec. He intentado con OpenSSL, ambos con comandos rsa y pkcs8, pero sin suerte. No hay una necesidad específica de usar openssl si hay algo más fácil.
Específicamente:
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
También he intentado especificando el informar y outform sin éxito.
[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
Cualquier ayuda sería muy apreciada en este momento.
Eliminé la etiqueta de Java porque no está restringida a java y espero que tenga una audiencia más amplia – cfi
Creo que la mayoría de los comandos de OpenSSL esperan un solo objeto por archivo (algunos renuncian a la mano). Cree un segundo archivo y solo agréguele la clave privada (incluyendo la TECLA PRIVADA '----- BEGIN RSA -----' y '----- END RSA PRIVATE KEY -----') . Luego prueba tus comandos. – jww
[Openssl pkcs8 formato predeterminado le da a RSA PRIVATE KEY] (https://superuser.com/questions/606215/openssl-pkcs8-default-format-gives-rsa-private-key). – jww