Es posible que sus claves ya estén en formato PEM, pero solo se nombran con .crt o .key.
Si el contenido del archivo comienza con -----BEGINy puede leerlo en un editor de texto:
El archivo usa base64, que se puede leer en ASCII, no en formato binario. El certificado ya está en formato PEM. Simplemente cambie la extensión a .pem.
Si el archivo está en binario:
Para el servidor.crt, usaría
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
Para server.key, use openssl rsaen lugar de openssl x509.
El server.key es probablemente su clave privada, y el archivo .crt es el certificado x509 devuelto, firmado.
Si esto es para un servidor web y no puede especificar cargar una clave privada y pública separada:
Es posible que deba concatenar los dos archivos. Para este uso:
Verifique el formato de server.key. Solo asumí que era RSA. Pero leer la primera línea del archivo probablemente te dirá eso.
maxwellb
10
Solo un aviso que cat server.crt server.key > server.pemno colocará el comentario abierto en su propia línea, lo que parece ser un requisito. El correo de mensajería me dio un infierno y me llevó horas descubrir qué iba mal.
Graham Walters
1
Gracias Graham Diferentes herramientas generarán los archivos de manera diferente y, en última instancia, algunas verificaciones son buenas. Cuando realicé estos pasos, los archivos terminaron con una nueva línea, por ejemplo.
maxwellb
El consejo sobre la concatenación de los archivos .crt y .key juntos fue muy útil. Quería usar mi certificado con stunnel3, pero no tenía forma de especificar el archivo de clave. Utilizando la concatenación funcionó. (En realidad, ya stunnel3 es un programa Perl, he añadido una opción para mí mismo para leer el archivo de la clave Sin embargo, desde que vi más tarde la concatenación trabajado, he invertí stunnel3 a su código original..)
LS
2
Solo un golpe para decir que cat server.crt server.key > server.includesprivatekey.pemes útil para SSL con haproxy 1.5.
jimm101
224
Necesitaba hacer esto para un AWS ELB. Después de ser golpeado por el diálogo muchas veces, finalmente esto es lo que funcionó para mí:
Con AWS, no olvides anteponer el nombre del archivo con file://. Entonces se verá así:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
FloatingRock
1
El segundo comando no hace nada si su entrada es un archivo pem, por lo que suponiendo que lo sea, solo necesita el primer comando
Kristofer el
¡Increíble! ¡Esto funcionó bien para mí! Acabo de convertir mis archivos .key y .crt a .pem usando sus líneas de código y luego cargué (copiar / pegar) a través de la consola de AWS. ¡Gracias!
Diego D
79
Un pemarchivo contiene el certificado y la clave privada. Depende del formato en que se encuentre su certificado / clave, pero probablemente sea tan simple como esto:
@tq: Eso significa que no tienes permiso para leer o escribir ese archivo.
algo
gracias @sth buscará permiso. pero estaba haciendo esto con los comandos sudo
tq
8
@tq: cat server.crt server.key | sudo tee server.pem
dimir
2
cuidado con las nuevas líneas faltantes, nuestro archivo pem podría tener líneas ilegibles como ----- CERTIFICADO FINAL ---------- BEGIN CERTIFICATE -----
Wolfgang Fahl
24
Además, si no desea que pida una frase de contraseña, debe ejecutar el siguiente comando:
Si desea un archivo que comience -----BEGIN RSA PRIVATE KEY-----y tiene uno que comience -----BEGIN ENCRYPTED PRIVATE KEY-----, este es el comando que desea usar.
Philippe Gerber
18
esta es la mejor opción para crear un archivo .pem
Lo que he observado es: si usa openssl para generar certificados, captura tanto la parte de texto como la parte del certificado base64 en el archivo crt. El formato estricto de pem dice ( definición de wiki ) que el archivo debe comenzar y terminar con BEGIN y END.
.pem - (Privacy Enhanced Mail) Certificado DER codificado en Base64, entre "----- BEGIN CERTIFICATE -----" y "----- END CERTIFICATE -----"
Entonces, para algunas bibliotecas (encontré esto en java) que esperan un formato de pem estricto, el crt generado fallará la validación como un 'formato de pem no válido'.
Incluso si copia o agrupa las líneas con BEGIN / END CERTIFICATE y lo 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:
Otra opción es simplemente pasar el certificado no estricto openssl x509. cat certificate.crt | openssl x509 > certificate.pem
Producirá
Si desea obtener todo, desde "BEGIN" hasta el final del archivo, es un trabajo para sed. Específicamente, quieres algo como sed -n '/--BEGIN/,$p' cert.crten este caso. Para explicar eso: el "-n" le dice a sed que no imprima nada de manera predeterminada, y luego la expresión de rango /--BEGIN/,$hace que el pcomando (imprimir) se aplique a las líneas entre la primera línea que contiene --BEGINy el final del archivo ( $).
dannysauer
4
Intenté pasar de godaddy a motor de aplicaciones. ¿Cuál fue el truco fue usar esta línea?
exactamente como es, 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é public.pem a la consola de administración para obtener el "certificado X.509 codificado por PEM", y cargué el private.pem por la "clave privada RSA codificada por PEM sin cifrar".
Al intentar cargar un certificado GoDaddy en AWS, fallé varias veces, pero al final fue bastante simple. No es necesario convertir nada a .pem. Solo debe asegurarse de incluir el certificado de paquete GoDaddy en el parámetro de la cadena, p. Ej.
Esto no funcionó para míAn error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Adam Raudonis
4
Descargar certificado del portal provisional por appleId,
Exporte el certificado del llavero y dé el nombre (Certificados.p12),
Abra el terminal y vaya a la carpeta donde guarda el archivo de Certificados.p12,
.pem
a.crt
y.key
.Respuestas:
Es posible que sus claves ya estén en formato PEM, pero solo se nombran con .crt o .key.
Si el contenido del archivo comienza con
-----BEGIN
y puede leerlo en un editor de texto:El archivo usa base64, que se puede leer en ASCII, no en formato binario. El certificado ya está en formato PEM. Simplemente cambie la extensión a .pem.
Si el archivo está en binario:
Para el servidor.crt, usaría
Para server.key, use
openssl rsa
en lugar deopenssl x509
.El server.key es probablemente su clave privada, y el archivo .crt es el certificado x509 devuelto, firmado.
Si esto es para un servidor web y no puede especificar cargar una clave privada y pública separada:
Es posible que deba concatenar los dos archivos. Para este uso:
Recomendaría nombrar archivos con "incluye clave privada" para ayudarlo a administrar los permisos que mantiene con este archivo.
fuente
cat server.crt server.key > server.pem
no colocará el comentario abierto en su propia línea, lo que parece ser un requisito. El correo de mensajería me dio un infierno y me llevó horas descubrir qué iba mal.server.crt server.key > server.includesprivatekey.pem
es útil para SSL con haproxy 1.5.Necesitaba hacer esto para un AWS ELB. Después de ser golpeado por el diálogo muchas veces, finalmente esto es lo que funcionó para mí:
Gracias NCZ
Editar: como dice @floatingrock
Con AWS, no olvides anteponer el nombre del archivo con
file://
. Entonces se verá así:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
fuente
file://
. Entonces se verá así:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
Un
pem
archivo contiene el certificado y la clave privada. Depende del formato en que se encuentre su certificado / clave, pero probablemente sea tan simple como esto:fuente
-bash: server.key.pem: Permission denied
Además, si no desea que pida una frase de contraseña, debe ejecutar el siguiente comando:
fuente
-----BEGIN RSA PRIVATE KEY-----
y tiene uno que comience-----BEGIN ENCRYPTED PRIVATE KEY-----
, este es el comando que desea usar.esta es la mejor opción para crear un archivo .pem
fuente
Lo que he observado es: si usa openssl para generar certificados, captura tanto la parte de texto como la parte del certificado base64 en el archivo crt. El formato estricto de pem dice ( definición de wiki ) que el archivo debe comenzar y terminar con BEGIN y END.
Entonces, para algunas bibliotecas (encontré esto en java) que esperan un formato de pem estricto, el crt generado fallará la validación como un 'formato de pem no válido'.
Incluso si copia o agrupa las líneas con BEGIN / END CERTIFICATE y lo 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:
fuente
openssl x509
.cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
en este caso. Para explicar eso: el "-n" le dice a sed que no imprima nada de manera predeterminada, y luego la expresión de rango/--BEGIN/,$
hace que elp
comando (imprimir) se aplique a las líneas entre la primera línea que contiene--BEGIN
y el final del archivo ($
).Intenté pasar de godaddy a motor de aplicaciones. ¿Cuál fue el truco fue usar esta línea?
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 / organización común como www.name.com
Luego abrí el csr, lo copié, lo pegué en Go Daddy, luego lo descargué, lo descomprimí, navegué a la carpeta descomprimida con el terminal e ingresé:
Luego utilicé estas instrucciones de Problemas con el dominio personalizado de Google Apps SSL , que fueron:
exactamente como es, 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é public.pem a la consola de administración para obtener el "certificado X.509 codificado por PEM", y cargué el private.pem por la "clave privada RSA codificada por PEM sin cifrar".
.. Y eso finalmente funcionó.
fuente
Al intentar cargar un certificado GoDaddy en AWS, fallé varias veces, pero al final fue bastante simple. No es necesario convertir nada a .pem. Solo debe asegurarse de incluir el certificado de paquete GoDaddy en el parámetro de la cadena, p. Ej.
Y para eliminar su carga fallida anterior, puede hacer
fuente
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
Ejecute los siguientes comandos:
una)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,si)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
fuente
fuente