Me han dado un PEM archivo con un certificado y un bar/claves privadas. Específicamente incluye los encabezados

-----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 entendimiento es sin cabecera siguiente de la BEGIN RSA PRIVATE KEY encabezado que este pem archivo contiene una clave privada en el formato tradicional (PKCS1) sin cifrado.

Que necesito para convertir esta clave privada a una codificación DER PKCS8 sin cifrar formato para su uso con java de código de servidor, específicamente PKCS8EncodedKeySpec. He tratado de OpenSSL, ambos con rsa y pkcs8 comandos, pero no hubo suerte. No hay necesidad específica a utilizar 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 especificar 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 punto.

  • He quitado java etiqueta porque no en todos restringido a java y esperemos llegar a un público más amplio
  • Creo que la mayoría de los comandos OpenSSL esperar un objeto único por archivo (algunos de la mano de la renuncia). Crear un segundo archivo, y sólo añadir que la clave privada (incluyendo la -----BEGIN RSA PRIVATE KEY----- y -----END RSA PRIVATE KEY-----). Luego pruebe los comandos.
  • Openssl pkcs8 formato predeterminado da la CLAVE PRIVADA RSA.
  • Esta pregunta que parece pertenecer a otro sitio en la red de Intercambio de Pila porque no es acerca de la programación. Tal vez Super Usuario.

2 Comentarios

  1. 59

    Trate de usar comando siguiente. Yo no lo he probado pero creo que se debe trabajar.

    openssl pkcs8 -topk8 -inform PEM -outform DER -in filename -out filename -nocrypt
    • Esto me da: Error de descifrado de clave 140139164128912:error:0906D06C:PEM rutinas:PEM_read_bio:no hay línea de salida:pem_lib.c:701:Esperando: la CLAVE PRIVADA
    • tanto la clave privada antes y después de usar la misma clave pública de la derecha?
  2. 27

    Para convertir la clave privada de PKCS#1 a PKCS#8 con openssl:

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

    Que trabajar siempre y cuando usted tiene el PKCS#1 clave en el PEM (formato de texto) como se describe en la pregunta.

    • Así que esto es sólo duplicado de Nilesh la respuesta?
    • Hay una diferencia aquí; el formato del archivo de salida. Sería genial, sin embargo, si Sergiu podría explicar por qué esto es mejor/diferente de la respuesta existente.
    • Pedro le preguntó acerca de DER clave como de salida.

Dejar respuesta

Please enter your comment!
Please enter your name here