¿Cómo obtener un archivo .pem a partir de archivos .key y .crt?
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
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
- Descargar certificado provisional desde el portal de ID de Apple,
- certificado de exportación de la cadena dominante y dar nombre (Certificates.p12),
- Abrir el terminal y la carpeta Goto, donde se guarda el archivo anterior Certificates.p12,
-
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
- 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 !!