“A chave privada está ausente ou é inválida ao importar um certificado” no Google Chrome

“A chave privada está ausente ou é inválida ao importar um certificado” no Google Chrome

Quero testar meu aplicativo da web em https localhost. Infelizmente, parece impossível remover o aviso de certificado do Chrome. Primeiro, gerei o certificado assim:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/localhost-selfsigned.key -out /etc/ssl/certs/localhost-selfsigned.crt

Então eu queria adicioná-lo ao Chrome, configurações > avançado > gerenciar certificados > importar. Tento importar o arquivo .crt gerado antes e tudo que obtenho é o seguinte:

Erro de importação de certificado: a chave privada deste certificado de cliente está ausente ou é inválida.

Pesquisei no Google, mas não encontrei nada útil.

Também tentei ativar o sinalizador permitir-inseguro-localhost e abrir o Chrome, --ignore-certificate-errorsmas ele ainda mostra o aviso e https quebrado

Existem outras maneiras ou estou fazendo algo errado com o certificado?

Responder1

Acho que o que você pode estar tentando fazer é adicioná-lo ao armazenamento de certificados errado. Se você estiver tentando adicioná-lo em "Seus certificados", você terá problemas. Essa guia serve para adicionar certificados de identidade; o que seu navegador oferece ao servidor para estabelecer a identidade do navegador.

O que eu acho que você deseja fazer, com base na sua descrição, é que seu navegador confie no certificado autoassinado que estará no servidor. Se for esse o caso, você precisa adicioná-lo na guia “Autoridades”.

Responder2

O que funcionou para mim foi

  • configurando uma CA
  • assinando meu próprio certificado usando esta CA e então
  • importando a chave CA para o Chrome (Autoridades).

Eu peguei o procedimento deesseresponda no SO.

Como meu problema específico era atender subdomínios multiníveis, analisarei isso desse ângulo.

subdomínios:

  • bar.fooz.meudominio.com
  • foo.fooz.meudominio.com
  1. Torne-se uma autoridade certificadora
export CA=myca
# you probably want to have this in its own directory
mdkir /etc/ssl/$CA && cd /etc/ssl/$CA

# generate private key
openssl genrsa -des3 -out $CA.key 2048

# generate root certificate
openssl req -x509 -new -nodes -key $CA.key -sha256 -days 825 -out $CA.pem
  1. Crie certificados assinados por CA
export NAME=fooz.mydomain.com
# if CA files were in a separate directory
cd .. && mkdir /etc/ssl/$NAME && cd /etc/ssl/$NAME

# generate private key
openssl genrsa -out $NAME.key 2048

# Create a certificate-signing request
# Once prompted, set FQDN to the value of $NAME
openssl req -new -key $NAME.key -out $NAME.csr

# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
# Optionally, add additional domains (I've added a subdomain here)
DNS.2 = foo.$NAME
DNS.3 = bar.$NAME
IP.1 = 192.168.0.13 # (Optional, but probably important), add an IP address (if the connection which you have planned requires it)
EOF

# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA $CA.pem -CAkey $CA.key -CAcreateserial -out $NAME.crt -days 825 -sha256 -extfile $NAME.ext
  1. Baixe o $CA.pemarquivo e importe como Autoridade no seu navegador:
    1. Chrome settings (Settings > Privacy and Security > Security > Manage certificates > Authorities > Import). Check Trust this certificate for identifying websites
    2. Firefox: Preferences > Privacy and Security > Certificates > View Certificates > Authorities > import. Check Trust this CA to identify websites
  1. Reinicie seu navegador (o Firefox funcionou sem a necessidade de reiniciar)

Responder3

O Chrome espera um arquivo no formato PKCS12 que é usado para armazenar o certificado, qualquer certificado intermediário e a chave privada em um único arquivo criptografável. esses arquivos geralmente têm as extensões .p12e .pfx.

Para gerar um use o comando abaixo

openssl pkcs12 -export -inkey ./sample.key -in ./sample.crt -out ./sample.p12

Este comando solicitará uma senha que precisamos lembrar e utilizá-la ao importar o p12arquivo gerado para o Chrome.

informação relacionada