Pregunta

¿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
¿Fue útil?

Solución

Las claves pueden estar ya en formato PEM, pero sólo con el nombre .crt o .key.

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

El archivo utiliza base 64, que se puede leer en formato ASCII, no formato binario. El certificado ya está en formato PEM. Sólo cambia la extensión a .PEM.

Si el archivo está en formato binario:

Para el server.crt, se usaría

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

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

El server.key es probable que su clave privada, y el archivo se .crt la regresó, firmado, certificado X509.

Si se trata de un servidor Web y no se puede especificar la carga de una clave privada y pública separada:

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

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

Yo recomendaría nombrar los archivos con "includesprivatekey" para ayudarle a gestionar los permisos que guardas con este archivo.

Otros consejos

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

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

Gracias NCZ

Edit: Como dice @floatingrock

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

 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 de su certificado / clave se encuentra, pero probablemente es tan simple como esto:

cat server.crt server.key > server.pem

Además, si no desea que se pida una contraseña, a continuación, tendrá que ejecutar el siguiente comando:

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

esta es la mejor opción para crear el archivo .pem

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

Lo que he observado es: si utiliza OpenSSL para generar certificados, que conjugue la parte de texto y la parte de base 64 del certificado en el archivo de CRT. El formato PEM estricta dice ( wiki definición ) que el archivo debe empezar y terminar con BEGIN y FIN.

  

.pem - certificado DER (Privacy Enhanced Mail) Base64 codificado,   encerrado entre "----- BEGIN CERTIFICATE -----" y "----- END   CERTIFICADO ----- "

Así que para algunas bibliotecas (me encontré con esto en java) que esperan formato PEM estricta, el CRT generada fallaría la validación como un 'formato PEM no válido'.

Aunque copie o utilice grep las líneas con BEGIN / END CERTIFICATE, y pegarlo en un archivo cert.pem, que debería funcionar.

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

  

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

Estaba intentando pasar de godaddy al motor de aplicaciones.El truco fue usar esta línea:

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

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

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í, navegué hasta la carpeta descomprimida con el terminal y entré:

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

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

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 cargué el archivo public.pem en la consola de administración para el "certificado X.509 codificado con PEM" y cargué el archivo privado para la "Clave privada RSA codificada con PEM sin cifrar".

..Y eso finalmente funcionó.

tratar de cargar un certificado de GoDaddy a AWS he fallado varias veces, pero al final era bastante simple. No hay necesidad de convertir cualquier cosa para .PEM. Sólo tienes que estar seguro de incluir el certificado de GoDaddy paquete 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 borrar la subida anterior no se puede hacer

aws iam delete-server-certificate --server-certificate-name mypreviouscert
  1. Descargar certificado provisional desde el portal de ID de Apple,
  2. certificado de exportación de la cadena dominante y dar nombre (Certificates.p12),
  3. Abrir el terminal y la carpeta Goto, donde se guarda el archivo anterior Certificates.p12,
  4. Ejecutar comandos a continuación:

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

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

  5. Su .pem archivo listo "pushcert.pem".
  • Abrir el terminal.
  • Ir a la carpeta donde se encuentra su certificado.
  • Ejecutar comando a continuación mediante la sustitución de nombre con su certificado.
  

openssl pkcs12 -en YOUR_CERTIFICATE.p12 salida privado YOUR_CERTIFICATE.pem -nodes -clcerts

  • La esperanza de que funcione !!
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top