No se puede cargar la clave privada. (Rutinas PEM: PEM_read_bio: sin línea de inicio: pem_lib.c: 648: Esperando: CUALQUIER LLAVE PRIVADA)


92

Tengo un archivo .key que es un archivo de clave privada con formato PEM. No hice este archivo pero lo obtuve de alguna parte.

Quería ver su hash MD5 con la herramienta openssl como el siguiente comando.

openssl rsa -in server.key -modulus -noout

Pero esto genera el siguiente error.

unable to load Private Key
13440:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:648:Expecting: ANY PRIVATE KEY

Aquí hay algo de asn1parse del archivo .key.

openssl asn1parse -in server.key
0:d=0  hl=4 l= 603 cons: SEQUENCE
4:d=1  hl=2 l=   1 prim: INTEGER           :00
7:d=1  hl=3 l= 129 prim: INTEGER           :C141201603899993919CBAA56985E9C7
C6A2AF713A02F5FE88D38CEFBED9304599689280B84B0AB577A9719CA20DDA1246A894AF397A2C57
EE5A582B036CC367E3667454DCD82DBDBF187C35FE39F61C71B517DDDF576F5471B4EC2E045E0F9D
619F5616C4E832F00CBD0DBF41B4BA3CBC4B4B603AE1FE61965917DA732E0DEF
139:d=1  hl=2 l=   3 prim: INTEGER           :010001
144:d=1  hl=3 l= 128 prim: INTEGER           :1687B9AE67562CEDEBDD7A531B84CDB7
093CE138519B93C34B7F626076FF0A262B16EA71904ACB6251A39307C04ADE202055BA13DD9F1539
6123EE408183361A9BC08B9413FA360EA928E48CC3F52B33ACF2980758F02BA2139F652F30A257C2
2E45D7C25835FC4D22B9ECECC12AB632318D4F47E1EBDAD9781B96BCFF03A2D1

 ...

¿Hay algo más que pueda intentar?


2
¿Cuál es el encabezado / pie de página exacto del archivo PEM? Puede obtener este error si está enviando una clave pública. Además, el comando que enumeró no dará el hash MD5. Dará el módulo de la clave.
gtrig

Solía scpcopiar el archivo de Windows a Ubuntu. Para solucionarlo, eliminé el archivo en Ubuntu, creé un nuevo archivo vacío allí, y usé vimy luego pegué el contenido correcto.
Ryan

Respuestas:


64

Abra el archivo de clave en Notepad ++ y verifique la codificación. Si dice UTF-8-BOM, cámbielo a UTF-8. Guarde el archivo y vuelva a intentarlo.


2
¿Qué pasa si estoy usando una Mac?
Ernest Zamelczyk

6
Use Visual Studio Code: ¡puede cambiar fácilmente la codificación usando la barra de herramientas inferior!
Luca Ghersi

2
¡Dios mío! ¡GRACIAS! Nunca me hubiera dado cuenta de eso por prueba y error, ¡solucionó el problema por mí!
Mikael Dyreborg Hansen

Esto fue todo para mí. ¡Gracias!
Freeman Helmuth

3
GoDaddy produce claves privadas "clave privada generada.txt" con el prefijo BOM, lo que causa este problema. Al menos en una Mac, volcar el texto clave con cat no mostraba la lista de materiales, pero mirarlo con menos sí. Usé BBEdit para eliminar la lista de materiales, pero cualquiera que pueda cambiar el formato o cortar los primeros cuatro bytes funcionará.
Seth Noble

55

Cambié el encabezado y pie de página del archivo PEM a

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

y

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

¡Por fin funciona!


1
También puede agregar -inform pemal comando para obtener el mismo resultado. Ej openssl rsa -in server.key -modulus -noout -inform pem.
Simon Woodside

1
Compruebe stackoverflow.com/questions/54994641/… si resuelve su problema
qstack

Algo ya está funcionando correctamente con el formato "malo" (es decir, encabezados sin cambios), por lo tanto, esta es una solución improvisada, destinada a romper algo que ya estaba funcionando bien, como un proxy inverso que no falla por la falta de esos manualmente -encabezados y pies de página editados. ¡Sí!
alejandrob

32

su archivo .key contiene caracteres ilegales. puede verificar el archivo .key como este:

# file server.key

salida "server.key: UTF-8 Unicode (con BOM) text" significa que es un texto sin formato, no un archivo de clave. La salida correcta debe ser "server.key: PEM RSA private key".

use el siguiente comando para eliminar caracteres ilegales:

# tail -c +4 server.key > new_server.key

La clave new_server.key debería ser correcta.

Para más detalles, puede hacer clic aquí , gracias por la publicación.


1
file server.keyeste comando me ayudó a solucionar el problema. Gracias.
itsHarshad

El comando tail parece haber agregado caracteres de formato extraños a mi archivo de claves. No estoy seguro de por qué sería esto.
ryanwebjackson

Esto, en combinación con la respuesta de @tkpl, parece haber eliminado los errores para mí.
ryanwebjackson

Esto me ahorró algunas horas y me ahorró mucho cabello.
Felipe Gusmao

6
> I have a .key file which is PEM formatted private key file.
> ...
> Here's some asn1parse of the .key file...

Que parezca correcto asn1parseme lleva a creer que no está codificado en PEM.


¿Hay algo más que pueda intentar?

Como parece ser ASN.1, intente:

$ openssl rsa -in server.key -inform DER -modulus -noout

Observe el -inform DERpara cambiar entre codificaciones.


6

Crear certificado CA

openssl genrsa -out privateKey.pem 4096
openssl req -new -x509 -nodes -days 3600 -key privateKey.pem -out caKey.pem



2

Estoy en Windows 10 y guardé mi clave con la codificación de Windows1252 y funcionó para mí. En otra pregunta de StackOverflow, algunas personas estaban solucionando esto con UTF-8 con BOM .

En otras palabras, puede ser la codificación del archivo.


1

Puede ser que la clave privada en sí no esté presente en el archivo. También me enfrenté al mismo problema, pero el problema es que no hay una clave privada presente en el archivo.


1

esto podría suceder si está intentando utilizar su clave pública para crear un certificado en lugar de su clave privada. deberías usar clave privada


0

Tuve el mismo problema hoy, y noté que esto ocurre cuando el propietario / grupo de archivo no es el que ejecuta la aplicación que lee la clave. Quizás también sea tu problema.


0

Ninguna de las otras respuestas parecía correcta en mi caso, sin embargo, encontré la respuesta real aquí.

Mi id_rsaarchivo ya estaba en formato PEM, solo necesitaba agregar la .pemextensión al nombre del archivo.

Gracias a

Las posibles opciones para el openssl rsa -informparámetro son una de las siguientes:PEM DER

Un PEMarchivo codificado es una codificación de texto sin formato que se parece a:

-----BEGIN RSA PRIVATE KEY-----
MIGrAgEAAiEA0tlSKz5Iauj6ud3helAf5GguXeLUeFFTgHrpC3b2O20CAwEAAQIh
ALeEtAIzebCkC+bO+rwNFVORb0bA9xN2n5dyTw/Ba285AhEA9FFDtx4VAxMVB2GU
QfJ/2wIRANzuXKda/nRXIyRw1ArE2FcCECYhGKRXeYgFTl7ch7rTEckCEQDTMShw
8pL7M7DsTM7l3HXRAhAhIMYKQawc+Y7MNE4kQWYe
-----END RSA PRIVATE KEY-----

Si bien DERes un formato de codificación binario.


0

En nuestro caso, lo que causó el problema es que la clave privada que intentábamos usar estaba cifrada con una frase de contraseña.

Tuvimos que descifrar la clave privada ssh-keygen -pantes de poder usar la clave privada con la herramienta de línea de comandos openssl.


-6

¿Por qué no usar cetificate bot

yum instalar epel-release

yum instalar certbot-nginx

Obtener un certificado

certbot --nginx -d example.com -d www.example.com

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.