Apache SSL-Fehler: Privater Schlüssel nicht gefunden

8

Ich verwende Apache unter Ubuntu 14.04 und versuche, SSL zu implementieren. Jede Hilfe wäre sehr dankbar.

default-ssl.conf hat:

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

Wenn ich Apache neu starte, lautet die Fehlermeldung 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$
mikesynan
quelle
Wie haben Sie dieses Problem gelöst?
Srinivas

Antworten:

6

WARNUNG: Veröffentlichen Sie Ihren privaten Schlüssel niemals im Internet. Kopieren Sie es nicht einmal auf einen anderen Computer, eine Workstation usw. Es muss so privat wie möglich gehalten werden.

SSLCertificateKeyFile erfordert einen privaten Schlüssel. Dieser Schlüssel wird normalerweise vor CSR oder gleichzeitig generiert. Suchen Sie nach einer Datei, die mit einer Zeile beginnt, die Folgendes enthält:BEGIN PRIVATE KEY

CSR (Certificate Signing Request) ist nur erforderlich, wenn Sie das Zertifikat signieren möchten. Danach können Sie es verwerfen.

Wenn Sie den privaten Schlüssel verloren haben, müssen Sie einen neuen privaten Schlüssel generieren, dann einen neuen CSR generieren und die Zertifizierungsstelle (Zertifizierungsstelle) bitten, den CSR erneut zu signieren.

Mircea Vutcovici
quelle
1

Hier ist das Problem:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

Sie haben versehentlich Ihre CSR-Datei (Certificate Signing Request) hier abgelegt. Sie sollten dort die private Schlüsseldatei ablegen, mit der Sie stattdessen die CSR generiert haben. Diese private Schlüsseldatei sollte nicht kennwortgeschützt sein, da Sie sonst jedes Mal, wenn Sie Apache (neu) starten, ein Kennwort eingeben müssen.

Im Folgenden finden Sie eine kurze Zusammenfassung zum Generieren von CSRs mit OpenSSL (ein gutes Tutorial finden Sie in der Ubuntu-Dokumentation ):

1) Generieren Sie den Serverschlüssel:

openssl genrsa -des3 -out server.key 2048

Dazu müssen Sie ein Passwort angeben.

2) Geben Sie einen passwortlosen privaten Schlüssel ein und geben Sie das oben verwendete Passwort ein, wenn Sie dazu aufgefordert werden:

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

3) Generieren Sie die CSR mit Ihrem privaten Schlüssel ohne Passwort:

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

wo "mydomain.org" könnte Ihre Domain sein. Sie müssen einige Fragen interaktiv beantworten. Sobald Sie fertig sind, senden Sie die mydomain.org.csrDatei an Ihre Zertifizierungsstelle. Sie erhalten entweder eine *.crtDatei oder eine *.pemDatei zurück. Nehmen wir an, sie haben es dir gegeben mydomain.org.crt. Installieren Sie es als Ihr Zertifikat und die kennwortlose Schlüsseldatei als Ihren Schlüssel (die Speicherorte sind für Ubuntu 14.04 gültig, sie befinden sich möglicherweise an einer anderen Stelle auf anderen Systemen, überprüfen Sie die Apache2-Dokumente):

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

Und schließlich bearbeiten Sie die Apache2-Konfiguration (könnte sein default-ssl.conf):

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

Hoffe das hilft.

Kehlkopf Decidua
quelle
1

Ich weiß, dass jemand diese Frage bereits beantwortet hat, aber ich wollte andere wissen lassen, was mit mir passiert ist, als ich diesen Fehler erhalten habe.

In meiner Sache hatte ich fälschlicherweise SSLCertificateFile anstelle von SSLCertificateChainFile für mein Zertifikatspaket. Dieser Fehler trat immer wieder auf und warf mich auf eine Schleife. Ich dachte immer, mein privater Schlüssel sei falsch.

user1283449
quelle
0

Ich weiß, dass dieser Beitrag alt ist, aber ich dachte, ich sollte mehr hinzufügen, da dies der erste Link in einer Google-Suche zu dem Fehler ist - "Init: Privater Schlüssel nicht gefunden"

Ich habe das schon einmal gesehen und es stellte sich heraus, dass es sich um einen schlechten privaten Schlüssel handelte. Ich habe strace verwendet, um den letzten privaten Schlüssel aufzuspüren, den Apache zu laden versucht hat. Nachdem ich es aus dem SSL-Verzeichnis und der httpd.conf entfernt hatte, wurde Apache ohne Probleme neu gestartet.

Ungültiger SSL-Schlüssel: -rw-r ----- 1 root 754974732 1.7K 31. Mai 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

Befehl zum Aufspüren des fehlerhaften Schlüssels: strace -f -v -s 1024 -o strace.log-Dienst httpd start

Umgebung: Betriebssystem: CentSO 6.9 Systemsteuerung: 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.

Ich hoffe das hilft!

m33k
quelle
Willkommen bei Server Fault. Ihr Beitrag könnte eine verbesserte Formatierung verwenden. Ist der Bad SSL Key: ... Absatz vielleicht ein Zitat? Auch Ihre TL; DR nicht brauchen als formatiert werden code. Vielen Dank für Ihren Beitrag.
Ich sage Reinstate Monica
0

Ich habe ein bisschen mit meinen Rädern gedreht, aber stellen Sie sicher, dass Sie eine vollständige private Schlüsseldatei haben. Es stellte sich heraus, dass mir ein paar Zeilen fehlten.

Der Befehl zum Überprüfen Ihres privaten Schlüssels lautet:

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

Ersetzen Sie /etc/httpd/certs/server.key durch den vollständigen Pfad zum privaten Schlüssel Ihres Servers. Wenn alles in Ordnung ist, sehen Sie:

RSA key ok

Hoffe es hilft jemandem und übrigens, mein Server war CentOS 7.6 mit Apache / 2.4.6

jbrahy
quelle