Erreur SSL Apache: clé privée introuvable

8

J'utilise apache sur Ubuntu 14.04 et j'essaie d'implémenter SSL. Toute aide serait grandement appréciée.

default-ssl.conf a:

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

Lorsque je redémarre apache, le message d'erreur dans /var/log/apache2/error.log est:

[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$
mikesynan
la source
comment avez-vous résolu ce problème?
Srinivas

Réponses:

6

AVERTISSEMENT: ne publiez jamais votre clé privée sur Internet. Ne le copiez même pas sur un autre ordinateur, poste de travail, etc. Il doit rester aussi privé que possible.

SSLCertificateKeyFile nécessite une clé privée. Cette clé est généralement générée avant CSR ou en même temps. Recherchez un fichier commençant par une ligne contenant:BEGIN PRIVATE KEY

La CSR (demande de signature de certificat) n'est requise que lorsque vous demandez à signer le certificat. Après cela, vous pouvez le jeter.

Si vous avez perdu la clé privée, vous devrez générer une nouvelle clé privée, puis générer une nouvelle CSR et demander à l'AC (autorité de certification) de signer à nouveau la CSR.

Mircea Vutcovici
la source
1

Voici le problème:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Vous avez placé votre fichier de demande de signature de certificat (CSR) ici par erreur. Vous devez y mettre à la place le fichier de clé privée que vous avez utilisé pour générer la CSR. Ce fichier de clé privée ne doit pas être protégé par mot de passe, sinon vous devrez taper un mot de passe chaque fois que vous (re) démarrez Apache.

Pour le bénéfice des générations à venir, voici un bref résumé de la façon de générer des CSR avec OpenSSL (un bon tutoriel est disponible dans la documentation Ubuntu ):

1) Générez la clé du serveur:

openssl genrsa -des3 -out server.key 2048

Cela vous oblige à spécifier un mot de passe.

2) Pour créer une clé privée sans mot de passe, entrez le mot de passe que vous avez utilisé ci-dessus lorsque vous y êtes invité:

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

3) Générez le CSR avec votre clé privée sans mot de passe:

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

où "mydomain.org" pourrait être votre domaine. Vous devez répondre à quelques questions de manière interactive. Une fois que vous avez terminé, vous envoyez le mydomain.org.csrfichier à votre autorité de certification. Vous récupérerez soit un *.crtfichier, soit un *.pemfichier. Supposons qu'ils vous aient donné mydomain.org.crt. Installez-le en tant que votre certificat et le fichier de clé sans mot de passe en tant que votre clé (les emplacements sont valides pour Ubuntu 14.04, ils peuvent être ailleurs sur d'autres systèmes, consultez les documents Apache2):

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

Et enfin éditez la configuration Apache2 (pourrait être default-ssl.conf):

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

J'espère que cela t'aides.

Laryx Decidua
la source
1

Je sais que quelqu'un a déjà répondu à cette question, mais je voulais faire savoir aux autres ce qui m'est arrivé lorsque j'ai eu cette erreur.

Dans ma cause, j'ai eu par erreur SSLCertificateFile au lieu de SSLCertificateChainFile pour mon bundle de certificats. Cette erreur a continué à apparaître et me jetait pour une boucle. Je n'arrêtais pas de penser que ma clé privée était fausse.

user1283449
la source
0

Je sais que ce message est ancien, mais je me suis dit que je devrais y ajouter plus car c'est le premier lien sur une recherche Google sur l'erreur - "Init: clé privée introuvable"

J'ai déjà vu cela se produire auparavant et il s'est avéré que c'était une mauvaise clé privée. J'ai utilisé strace pour retrouver la dernière clé privée qu'apache a essayé de charger. Une fois que je l'ai supprimé du répertoire ssl et du httpd.conf, Apache a redémarré sans problème.

Mauvaise clé SSL: -rw-r ----- 1 racine 754974732 1.7K 31 mai 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Commande utilisée pour rechercher la mauvaise clé: strace -f -v -s 1024 -o strace.log service httpd start

Environnement: OS: CentSO 6.9 Control Panel: cPanel 11.64 Apache Version 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.

J'espère que ça aide!

m33k
la source
Bienvenue dans Server Fault. Votre message pourrait utiliser une mise en forme améliorée. La mauvaise clé SSL: ... paragraphe peut-être une citation? De plus, votre TL; DR n'a pas besoin d'être formaté en tant que code. Merci d'avoir contribué.
Je dis Reinstate Monica
0

Je faisais tourner mes roues sur celui-ci pendant un moment, mais assurez-vous d'avoir un fichier de clé privée complet. Il s'est avéré qu'il me manquait quelques lignes.

La commande pour vérifier votre clé privée est:

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

remplacez /etc/httpd/certs/server.key par le chemin complet de la clé privée de votre serveur et si tout va bien, vous verrez:

RSA key ok

J'espère que cela aide quelqu'un et btw, mon serveur était CentOS 7.6 avec Apache / 2.4.6

jbrahy
la source