Convierta .pem a .crt y .key


Respuestas:


502

Pude convertir pem a crt usando esto:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt

13
Usar un editor de texto no es el mejor enfoque. Para extraer la clave en forma PKCS8: openssl pkey -in mumble.pem -out mumble-key.pem Si la versión de OpenSSL es anterior a 1.0.0, para extraer la clave como clave RSA:openssl rsa -in mumble.pem -out mumble-key.pem
Andron

131
Probé tu comando pero tuve:unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol

15
el comando de teclado (openssl pkey -in mumble.pem -out mumble-key.pem) proporciona esto: no se puede cargar la clave 129051320116880: error: 0906D06C: rutinas PEM: PEM_read_bio: sin línea de inicio: pem_lib.c: 703: esperando: CUALQUIERA CLAVE PRIVADA
mylord

2
openssl rsa -in your-cert.pem -outform pem -out your-key.pem
troyfolger

3
@Andron tanto pkey como rsa me dan un Expecting: ANY PRIVATE KEYerror.
Aero Wang

394

Convertir usando OpenSSL

Estos comandos le permiten convertir certificados y claves a diferentes formatos para que sean compatibles con tipos específicos de servidores o software.

  • Convierta un archivo DER (.crt .cer .der) a PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • Convierte un archivo PEM a DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Convierta un archivo PKCS # 12 (.pfx .p12) que contenga una clave privada y certificados a PEM

    openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
    
    You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
    
  • Convierta un archivo de certificado PEM y una clave privada a PKCS # 12 (.pfx .p12)

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
  • Convertir PEM a CRT (archivo .CRT)

    openssl x509 -outform der -in certificate.pem -out certificate.crt
    

OpenSSL Convertir PEM

  • Convertir PEM a DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Convertir PEM a P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • Convertir PEM a PFX

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    

OpenSSL Convert DER

  • Convertir DER a PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

OpenSSL Convert P7B

  • Convertir P7B a PEM

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
  • Convertir P7B a PFX

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
    openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
    

OpenSSL Convert PFX

  • Convertir PFX a PEM

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    

Generar claves rsa por OpenSSL

  • Usando OpenSSL en la línea de comando que primero necesitarías para generar una clave pública y privada, debes proteger con contraseña este archivo usando el argumento -passout, hay muchas formas diferentes que este argumento puede tomar, así que consulta la documentación de OpenSSL al respecto.

    openssl genrsa -out private.pem 1024
    
  • Esto crea un archivo de clave llamado private.pem que usa 1024 bits. Este archivo en realidad tiene las claves privadas y públicas, por lo que debe extraer la pública de este archivo:

    openssl rsa -in private.pem -out public.pem -outform PEM -pubout
    
    or
    
    openssl rsa -in private.pem -pubout > public.pem
    
    or
    
    openssl rsa -in private.pem -pubout -out public.pem
    

    Ahora tendrá public.pem que contiene solo su clave pública, puede compartirla libremente con terceros. Puede probar todo simplemente encriptando algo usted mismo usando su clave pública y luego descifrando usando su clave privada, primero necesitamos un poco de datos para encriptar:

  • Archivo de ejemplo:

    echo 'too many secrets' > file.txt
    
  • Ahora tiene algunos datos en file.txt, encriptemos usando OpenSSL y la clave pública:

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • Esto crea una versión cifrada de file.txt que lo llama file.ssl, si observa este archivo es solo basura binaria, nada muy útil para nadie. Ahora puedes desencriptarlo usando la clave privada:

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • Ahora tendrá un archivo sin cifrar en decrypted.txt:

    cat decrypted.txt
    |output -> too many secrets
    

Opciones de RSA TOOLS en OpenSSL

  • NOMBRE

    rsa: herramienta de procesamiento de claves RSA

  • SINOPSIS

    openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-in nombre de archivo] [-passin arg] [-out nombre de archivo] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]

  • DESCRIPCIÓN

    El comando rsa procesa claves RSA. Se pueden convertir entre varias formas y sus componentes impresos. Tenga en cuenta que este comando usa el formato tradicional compatible con SSLeay para el cifrado de clave privada: las aplicaciones más nuevas deberían usar el formato PKCS # 8 más seguro usando la utilidad pkcs8.

  • OPCIONES DE MANDO

    -help
    

    Imprima un mensaje de uso.

    -inform DER|NET|PEM
    

    Esto especifica el formato de entrada. La opción DER utiliza una forma codificada ASN1 DER compatible con el formato PKCS # 1 RSAPrivateKey o SubjectPublicKeyInfo. El formato PEM es el formato predeterminado: consiste en el formato DER base64 codificado con líneas adicionales de encabezado y pie de página. En el formato de entrada PKCS # 8 también se aceptan claves privadas. El formulario NET es un formato que se describe en la sección NOTAS.

    -outform DER|NET|PEM
    

    Esto especifica el formato de salida, las opciones tienen el mismo significado que la opción -inform.

    -in filename
    

    Esto especifica el nombre de archivo de entrada para leer una clave o entrada estándar si no se especifica esta opción. Si la clave está encriptada, se le solicitará una frase de paso.

    -passin arg
    

    la fuente de contraseña del archivo de entrada. Para obtener más información sobre el formato de arg, consulte la sección ARGUMENTOS DE FRASE DE PASO en openssl.

    -out filename
    

    Esto especifica el nombre de archivo de salida para escribir una clave o salida estándar si no se especifica esta opción. Si se configuran opciones de cifrado, se solicitará una frase de paso. El nombre de archivo de salida no debe ser el mismo que el nombre de archivo de entrada.

    -passout password
    

    la fuente de contraseña del archivo de salida. Para obtener más información sobre el formato de arg, consulte la sección ARGUMENTOS DE FRASE DE PASO en openssl.

    -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
    

    Estas opciones cifran la clave privada con el cifrado especificado antes de enviarla. Se solicita una frase de paso. Si no se especifica ninguna de estas opciones, la clave se escribe en texto sin formato. Esto significa que el uso de la utilidad rsa para leer una clave cifrada sin opción de cifrado se puede utilizar para eliminar la frase de contraseña de una clave, o al configurar las opciones de cifrado se puede usar para agregar o cambiar la frase de contraseña. Estas opciones solo se pueden usar con archivos de salida en formato PEM.

    -text
    

    imprime los diversos componentes clave públicos o privados en texto plano además de la versión codificada.

    -noout
    

    Esta opción impide la salida de la versión codificada de la clave.

    -modulus
    

    Esta opción imprime el valor del módulo de la clave.

    -check
    

    Esta opción verifica la consistencia de una clave privada RSA.

    -pubin
    

    de forma predeterminada, se lee una clave privada del archivo de entrada: con esta opción, se lee una clave pública.

    -pubout
    

    de forma predeterminada, se genera una clave privada: con esta opción, se generará una clave pública. Esta opción se configura automáticamente si la entrada es una clave pública.

    -RSAPublicKey_in, -RSAPublicKey_out
    

    como -pubin y -pubout, excepto que se utiliza el formato RSAPublicKey.

    -engine id
    

    especificar un motor (por su cadena de identificación única) hará que rsa intente obtener una referencia funcional al motor especificado, inicializándolo si es necesario. El motor se configurará como predeterminado para todos los algoritmos disponibles.

  • NOTAS

    El formato de clave privada PEM utiliza las líneas de encabezado y pie de página:

    -----BEGIN RSA PRIVATE KEY-----
    
    -----END RSA PRIVATE KEY-----
    

    El formato de clave pública PEM utiliza las líneas de encabezado y pie de página:

    -----BEGIN PUBLIC KEY-----
    
    -----END PUBLIC KEY-----
    

    El formato PEM RSAPublicKey utiliza las líneas de encabezado y pie de página:

    -----BEGIN RSA PUBLIC KEY-----
    
    -----END RSA PUBLIC KEY-----
    

    El formulario NET es un formato compatible con servidores Netscape más antiguos y archivos .key de Microsoft IIS, esto utiliza RC4 sin sal para su encriptación. No es muy seguro, por lo que solo debe usarse cuando sea necesario.

    Algunas versiones más nuevas de IIS tienen datos adicionales en los archivos .key exportados. Para usarlos con la utilidad, vea el archivo con un editor binario y busque la cadena "clave privada", luego rastree hasta la secuencia de bytes 0x30, 0x82 (esta es una SECUENCIA ASN1). Copie todos los datos desde este punto en adelante a otro archivo y úselos como entrada a la utilidad rsa con la opción -inform NET.

    EJEMPLOS

    Para eliminar la frase de contraseña en una clave privada RSA:

     openssl rsa -in key.pem -out keyout.pem
    

    Para cifrar una clave privada con triple DES:

     openssl rsa -in key.pem -des3 -out keyout.pem
    

    Para convertir una clave privada de PEM a formato DER:

      openssl rsa -in key.pem -outform DER -out keyout.der
    

    Para imprimir los componentes de una clave privada a la salida estándar:

      openssl rsa -in key.pem -text -noout
    

    Para generar solo la parte pública de una clave privada:

      openssl rsa -in key.pem -pubout -out pubkey.pem
    

    Salida de la parte pública de una clave privada en formato RSAPublicKey:

      openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    

32
Aún así, esto no responde a la pregunta de cómo obtener la clave privada del certificado binario (exportado).
bbaassssiiee

gracias, preguntándome si tengo un PEM que contiene una clave privada y certificados, ¿cómo puedo obtener certificados solamente? Sé que puedo copiar la parte de los certificados usando el editor de texto, pero quiero saber si hay algún comando openssl, gracias
workplaylifecycle

46

Para extraer la clave y el certificado de un archivo pem:

Extraer clave

openssl pkey -in foo.pem -out foo.key

Otro método para extraer la clave ...

openssl rsa -in foo.pem -out foo.key

Extraiga todos los certificados, incluida la Cadena CA

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Extraiga el primer certificado textual como DER

openssl x509 -in foo.pem -outform DER -out first-cert.der

77
openssl x509 -outform der -in C: \ Users \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Users \ Greg \ .ssh \ e360_stork_listener.crt no puede cargar el certificado 4294956672: error: 0906D06C: rutinas PEM: PEM_read_bio: sin línea de inicio: pem_lib.c: 708: Esperando: CERTIFICADO
CONFIANZA

5

0. Requisito previo : openssl debe estar instalado. En Windows, si Git Bashestá instalado, ¡inténtalo! Binarios alternativos se pueden encontrar aquí.

1. Extracto .keyde .pem:

openssl pkey -in cert.pem -out cert.key

2. Extracto .crtde .pem:

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt

1

Un archivo .crt almacena el certificado ... en formato pem. Entonces, un .pem, aunque también puede tener otras cosas como un csr (solicitud de firma de certificado), una clave privada, una clave pública u otros certs, cuando almacena solo un cert, es lo mismo que un .crt.

Un pem es un archivo codificado en base 64 con un encabezado y un pie de página entre cada sección.

Para extraer una sección en particular, un script perl como el siguiente es totalmente válido, pero puede usar algunos de los comandos de openssl.

 perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem

donde == 1 se puede cambiar a la sección que necesite. Obviamente, si conoce exactamente el encabezado y el pie de página que necesita y solo hay uno de ellos en el archivo (generalmente el caso si mantiene solo el certificado y la clave), puede simplificarlo:

 perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem

0

Si hizo esta pregunta porque la está utilizando mkcert, el truco es que el .pemarchivo es el certificado y-key.pem archivo es la clave.

(No necesitas convertir, solo ejecuta mkcert yourdomain.dev otherdomain.dev)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.