Saltar al contenido
ecdsa.com
OpenSSL CLI (openssl pkey / ec / rsa / dgst)CLI de OpenSSL

Mensaje de error

unable to load Public Key

Texto de OpenSSL 1.1.x; sigue siendo la forma más citada. OpenSSL 3.0 imprime «Could not read key of Public Key from cert.pem», y OpenSSL 3.5 y posteriores, «Could not find private key of Public Key from cert.pem» (reproducido con 3.0.2 y 3.6.4): el mismo fallo con otra redacción.

Qué significa

El comando openssl intentó leer una clave pública del archivo indicado y no encontró nada que reconozca como tal. El archivo existe; el problema es su contenido: otro tipo de objeto (un certificado, una clave privada, una clave SSH), una codificación incorrecta o algo que ni siquiera es una clave.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Extraer la clave de un certificado

    Un solo comando genera el PEM de clave pública SPKI que esperan los comandos con -pubin.

    bash
    openssl x509 -in cert.pem -pubkey -noout > pubkey.pem
    openssl pkey -pubin -in pubkey.pem -noout -text   # now loads
  2. 2.

    Convertir una clave OpenSSH a PEM

    ssh-keygen exporta una entrada en formato authorized_keys como un PEM estándar BEGIN PUBLIC KEY (SPKI); ssh-keygen llama a este formato PKCS8.

    bash
    ssh-keygen -f id_ecdsa.pub -e -m pkcs8 > pubkey.pem
  3. 3.

    Derivar la mitad pública de una clave privada

    Si el archivo es en realidad la clave privada, no uses -pubin: deriva la clave pública.

    bash
    openssl pkey -in private.pem -pubout -out pubkey.pem

Errores relacionados

Explorar toda la base de datos de errores de firma