Errore SSL Apache: chiave privata non trovata


8

Sto eseguendo apache su Ubuntu 14.04 e sto cercando di implementare SSL. Qualsiasi aiuto sarebbe molto apprezzato.

default-ssl.conf ha:

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

Quando riavvio apache, il messaggio di errore in /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$

come hai risolto questo problema?
Srinivas,

Risposte:


6

ATTENZIONE: non pubblicare mai la tua chiave privata su Internet. Non copiarlo nemmeno su un altro computer, workstation ecc. Deve essere mantenuto il più privato possibile.

SSLCertificateKeyFile richiede una chiave privata. Questa chiave viene in genere generata prima del CSR o contemporaneamente. Cerca un file che inizia con una riga contenente:BEGIN PRIVATE KEY

Il CSR (richiesta di firma del certificato) è richiesto solo quando si chiede di firmare il certificato. Dopodiché puoi scartarlo.

Se hai perso la chiave privata, dovrai generare una nuova chiave privata, quindi generare un nuovo CSR e chiedere all'autorità di certificazione (CA) di firmare nuovamente il CSR.


1

Ecco il problema:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Hai inserito qui il tuo file di richiesta di firma del certificato (CSR) per errore. Dovresti invece inserire lì il file della chiave privata che hai usato per generare il CSR. Quel file di chiave privata non dovrebbe essere protetto da password, altrimenti dovrai digitare una password ogni volta che riavvii Apache.

Per il beneficio delle generazioni future, ecco un breve riassunto di come generare CSR-s con OpenSSL (un buon tutorial è disponibile nella documentazione di Ubuntu ):

1) Genera la chiave del server:

openssl genrsa -des3 -out server.key 2048

Ciò richiede di specificare una password.

2) Crea una chiave privata senza password, inserisci la password che hai usato sopra quando richiesto:

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

3) Genera il CSR con la tua chiave privata senza password:

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

dove "mydomain.org" potrebbe essere il tuo dominio. Devi rispondere ad alcune domande in modo interattivo. Al termine, si invia il mydomain.org.csrfile all'autorità di certificazione. Restituirai un *.crtfile o un *.pemfile. Supponiamo che ti abbiano dato mydomain.org.crt. Installalo come certificato e il file della chiave senza password come chiave (i percorsi sono validi per Ubuntu 14.04, potrebbero trovarsi altrove su altri sistemi, controlla i documenti di Apache2):

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

E infine modificare la configurazione di Apache2 (potrebbe essere default-ssl.conf):

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

Spero che sia di aiuto.


1

So che qualcuno ha già risposto a questa domanda, ma volevo far sapere agli altri cosa mi è successo quando ho riscontrato questo errore.

Nella mia causa, avevo erroneamente SSLCertificateFile invece di SSLCertificateChainFile per il mio pacchetto di certificati. Questo errore continuava ad apparire e mi stava lanciando per un ciclo. Continuavo a pensare che la mia chiave privata fosse sbagliata.


0

So che questo post è vecchio, ma ho pensato che avrei dovuto aggiungerne altri dato che questo è il primo link su una ricerca su google sull'errore - "Init: chiave privata non trovata"

L'ho visto succedere prima e si è rivelata una cattiva chiave privata. Ho usato strace per rintracciare l'ultima chiave privata che Apache ha tentato di caricare. Dopo averlo rimosso dalla directory ssl e da httpd.conf, Apache è stato riavviato senza problemi.

Chiave SSL non valida: -rw-r ----- 1 root 754974732 1.7K 31 maggio 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Comando utilizzato per rintracciare la chiave errata: strace -f -v -s 1024 -o strace.log service httpd start

Ambiente: SO: CentSO 6.9 Pannello di controllo: cPanel 11.64 Apache versione 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.

Spero che questo possa essere d'aiuto!


Benvenuti in Server Fault. Il tuo post potrebbe utilizzare una formattazione migliorata. La chiave SSL non valida: ... il paragrafo è forse un preventivo? Inoltre, il tuo TL; DR non deve essere formattato come code. Grazie per aver contribuito.
Dico Reinstate Monica il

0

Stavo girando le ruote su questo per un po ', ma assicurati di avere un file di chiave privata completo. Si è scoperto che avevo un paio di righe mancanti dal mio.

Il comando per controllare la tua chiave privata è:

openssl rsa -in /etc/httpd/certs/server.key -check

sostituisci /etc/httpd/certs/server.key con il percorso completo della chiave privata del tuo server e se è tutto a posto vedrai:

RSA key ok

Spero che aiuti qualcuno e tra l'altro, il mio server era CentOS 7.6 con Apache / 2.4.6

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.