Pular para o conteúdo
ecdsa.com
OpenSSL CLI (openssl pkey / ec / rsa / dgst)CLI do OpenSSL

Mensagem de erro

unable to load Public Key

Texto do OpenSSL 1.1.x; ainda é a forma mais citada. O OpenSSL 3.0 imprime “Could not read key of Public Key from cert.pem”; o OpenSSL 3.5 e posteriores, “Could not find private key of Public Key from cert.pem” (reproduzido no 3.0.2 e no 3.6.4) — a mesma falha com outra redação.

O que significa

O comando openssl tentou ler uma chave pública do arquivo indicado e não encontrou nada que reconheça como tal. O arquivo existe — o problema é o conteúdo: outro tipo de objeto (certificado, chave privada, chave SSH), a codificação errada ou algo que nem é uma chave.

Por que acontece

Como corrigir

  1. 1.

    Extrair a chave de um certificado

    Um único comando gera o PEM da chave pública SPKI que os comandos com -pubin esperam.

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

    Converter uma chave OpenSSH para PEM

    O ssh-keygen exporta uma entrada no formato authorized_keys como um PEM padrão BEGIN PUBLIC KEY (SPKI) — o ssh-keygen chama esse formato de PKCS8.

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

    Derivar a metade pública de uma chave privada

    Se o arquivo for, na verdade, a chave privada, não use -pubin — derive a chave pública.

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

Erros relacionados

Ver toda a base de erros de assinatura