generar entre diferencia crear convertir certificado archivo ssl openssl pem asn.1 der

ssl - crear - diferencia entre crt y cer



¿Cómo obtener el archivo.pem de los archivos.key y.crt? (10)

¿Cómo puedo crear un archivo PEM a partir de un certificado SSL?

Estos son los archivos que tengo disponibles:

  • .crt
  • server.csr
  • server.key

  1. Descargar certificado del portal provisional por appleId,
  2. Exportar certificado desde el llavero y dar nombre (Certificados.p12),
  3. Abra el terminal y la carpeta goto donde guarda el archivo Certificates.p12 anterior,
  4. Ejecutar los siguientes comandos:

    a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes ,

    b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts

  5. Su archivo .pem listo "pushcert.pem".

Además, si no desea que solicite una frase de contraseña, deberá ejecutar el siguiente comando:

openssl rsa -in server.key -out server.key


Al intentar cargar un certificado GoDaddy en AWS, fallé varias veces, pero al final fue bastante simple. No hay necesidad de convertir nada a .pem. Solo debe asegurarse de incluir el certificado de paquete de GoDaddy en el parámetro de cadena, por ejemplo,

aws iam upload-server-certificate --server-certificate-name mycert --certificate-body file://try2/40271b1b25236fd1.crt --private-key file://server.key --path /cloudfront/production/ --certificate-chain file://try2/gdig2_bundle.crt

Y para eliminar tu anterior carga fallida puedes hacerlo.

aws iam delete-server-certificate --server-certificate-name mypreviouscert


Es posible que sus claves ya estén en formato PEM, pero que solo se nombren con .crt o .key.

Si el contenido del archivo comienza con -----BEGIN y puede leerlo en un editor de texto:

El archivo utiliza base64, que se puede leer en formato ASCII, no en formato binario. El certificado ya está en formato PEM. Solo cambia la extensión a .pem.

Si el archivo está en binario:

Para el server.crt, usaría

openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

Para server.key, use openssl rsa en lugar de openssl x509 .

La clave server.key es probablemente su clave privada, y el archivo .crt es el certificado x509 firmado y devuelto.

Si esto es para un servidor web y no puede especificar la carga de una clave privada y pública por separado:

Es posible que necesite concatenar los dos archivos. Para este uso:

cat server.crt server.key > server.includesprivatekey.pem

Recomendaría nombrar archivos con "includesprivatekey" para ayudarlo a administrar los permisos que mantiene con este archivo.


Esta es la mejor opción para crear un archivo .pem.

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts


Estaba tratando de pasar de GoDaddy al motor de aplicaciones. Lo que hizo el truco fue usar esta línea:

openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr

Exactamente como es, pero reemplazando el nombre con mi nombre de dominio (no es que realmente importara)

Y respondí todas las preguntas relacionadas con el nombre común / organización como www.name.com

Luego abrí el csr, lo copié, lo pegué en go daddy, luego lo descargué, lo descomprimí, navegé a la carpeta descomprimida con el terminal e ingresé:

cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt

Luego utilicé estas instrucciones de Problemas con el dominio personalizado de Google Apps SSL , que fueron:

openssl rsa -in privateKey.key -text > private.pem openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem

exactamente como está, excepto que en lugar de privateKey.key usé name.unencrypted.priv.key, y en lugar de www_mydomain_com.crt, usé name.crt

Luego subí el public.pem a la consola de administración para el "certificado X.509 codificado PEM", y subí el private.pem para la "clave privada RSA codificada PEM sin cifrar" ..

.. y que finalmente funcionó.


Lo que he observado es: si usa openssl para generar certificados, captura tanto la parte de texto como la parte de certificado base64 en el archivo crt. El formato pem estricto dice ( definición de wiki ) que el archivo debe comenzar y terminar con BEGIN y END.

.pem - (Certificado de DER codificado en base a la privacidad) Base64, incluido entre "----- BEGIN CERTIFICATE -----" y "----- END CERTIFICATE -----"

Entonces, para algunas bibliotecas (encontré esto en java) que esperan un formato pem estricto, el crt generado fallará la validación como un ''formato pem no válido''.

Incluso si copia o grep las líneas con BEGIN / END CERTIFICATE, y las pega en un archivo cert.pem, debería funcionar.

Esto es lo que hago, no muy limpio, pero funciona para mí, básicamente filtra el texto a partir de la línea BEGIN:

grep -A 1000 BEGIN cert.crt> cert.pem


Necesitaba hacer esto para un AWS ELB. Después de ser golpeado por el diálogo muchas veces, finalmente esto fue lo que funcionó para mí:

openssl rsa -in server.key -text > private.pem openssl x509 -inform PEM -in server.crt > public.pem

Gracias NCZ

Edición: como dice @floatingrock

Con AWS, no olvide anteponer el nombre del archivo con el file:// . Así se verá:

aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/

http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html


Un archivo pem contiene el certificado y la clave privada. Depende del formato en que esté su certificado / clave, pero probablemente sea tan simple como esto:

cat server.crt server.key > server.pem


  • Terminal abierta.
  • Vaya a la carpeta donde se encuentra su certificado.
  • Ejecute el comando siguiente reemplazando el nombre con su certificado.

openssl pkcs12 -en YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts

  • Espero que funcione !!