Erro SSL do Apache: chave privada não encontrada

6

Estou executando o apache no Ubuntu 14.04 e tentando implementar o SSL. Qualquer ajuda seria muito apreciada.

default-ssl.conf tem:

SSLCertificateFile      /etc/apache2/ssl/domain.crt 
SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Quando eu reiniciar o apache, a mensagem de erro em /var/log/apache2/error.log é:

[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found
[Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$
[Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more inf$
    
por mikesynan 02.02.2015 / 01:52

4 respostas

4

AVISO: nunca publique sua chave privada na Internet. Não o copie para outro computador, estação de trabalho, etc. Deve ser mantido o mais privado possível.

SSLCertificateKeyFile requer uma chave privada. Essa chave geralmente é gerada antes do CSR ou ao mesmo tempo. Procure um arquivo que comece com uma linha contendo: BEGIN PRIVATE KEY

O CSR (solicitação de assinatura de certificado) é necessário apenas quando você pede para assinar o certificado. Depois disso, você pode descartá-lo.

Se você perdeu a Chave Privada, precisará gerar uma nova Chave Privada, gerar um novo CSR e solicitar à CA (autoridade de certificação) que assine o CSR novamente.

    
por 02.02.2015 / 02:07
1

Aqui está o problema:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Você colocou seu arquivo de solicitação de assinatura de certificado (CSR) aqui por engano. Você deve colocar lá o arquivo de chave privada usado para gerar o CSR. Esse arquivo de chave privada não deve ser protegido por senha, caso contrário você precisaria digitar uma senha toda vez que você (re) iniciar o Apache.

Para o benefício das gerações futuras, aqui está um breve resumo de como gerar CSR-s com o OpenSSL (um bom tutorial está disponível no Documentação do Ubuntu ):

1) Gere a chave do servidor:

openssl genrsa -des3 -out server.key 2048

Isso requer que você especifique uma senha.

2) Criando uma chave privada sem senha, digite a senha que você usou acima quando solicitado:

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.SECURE
mv server.key.insecure server.key

3) Gere o CSR com sua chave privada sem senha:

openssl req -new -key server.key -out mydomain.org.csr

onde "mydomain.org" pode ser seu domínio. Você tem que responder algumas perguntas de forma interativa. Quando terminar, envie o arquivo mydomain.org.csr para sua autoridade de certificação. Você receberá de volta um arquivo *.crt ou um arquivo *.pem . Vamos supor que eles lhe deram mydomain.org.crt . Instale-o como seu certificado e o arquivo de chave sem senha como sua chave (os locais são válidos para o Ubuntu 14.04, eles podem estar em algum outro lugar em outros sistemas, verifique os documentos do Apache2):

sudo cp mydomain.org.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private/mydomain.org.key

E finalmente edite a configuração do Apache2 (pode ser default-ssl.conf ):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

Espero que isso ajude.

    
por 23.04.2015 / 14:44
1

Eu sei que alguém já respondeu a essa pergunta, mas eu queria que os outros soubessem o que aconteceu comigo quando recebi esse erro.

Em minha causa, por engano, eu tinha SSLCertificateFile em vez de SSLCertificateChainFile para meu pacote de certificados. Este erro continuou aparecendo e estava me jogando por um loop. Fiquei pensando que minha chave privada estava errada.

    
por 21.03.2018 / 21:43
0

Eu sei que este post é antigo, mas achei que deveria adicionar mais a ele, já que este é o primeiro link em uma pesquisa no google sobre o erro - "Init: chave privada não encontrada"

Eu já vi isso acontecer antes e acabou sendo uma chave privada ruim. Eu usei strace para rastrear a última chave privada que o apache tentou carregar. Depois de removê-lo do diretório ssl e do httpd.conf, o Apache foi reiniciado sem problemas.

Chave SSL inválida: -rw-r ----- 1 raiz 754974732 1.7K 31 de maio de 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Command used to track down the bad key: strace -f -v -s 1024 -o strace.log service httpd start

Ambiente: SO: CentSO 6.9 Painel de Controle: cPanel 11.64 Apache versão 2.2

tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.

Espero que isso ajude!

    
por 25.06.2017 / 01:28