Frage SSL-Fehler - Serverzertifikat kann nicht aus Datei gelesen werden


Ich habe heute SSL für meine Domain eingerichtet und habe ein anderes Problem gelöst - ich hatte gehofft, dass jemand etwas Licht in die Sache bringen könnte.

Ich erhalte immer die folgenden Fehlermeldungen:

[error] Init: Das Serverzertifikat konnte nicht aus der Datei /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt gelesen werden
[Fehler] SSL-Bibliothek Fehler: 218529960 Fehler: 0D0680A8: asn1 Codierung Routinen: ASN1_CHECK_TLEN: falsches Tag
[Fehler] SSL-Bibliotheksfehler: 218595386 Fehler: 0D07803A: ASN1-Codierroutinen: ASN1_ITEM_EX_D2I: verschachtelter asn1-Fehler

Ich betreibe Apache 2.2.16 und Ubuntu 10.10. Meine .crt-Datei hat die Tags Begin und End und wurde genau aus der Bestätigungs-E-Mail kopiert, die ich erhalten habe, sehr frustrierend!

Prost!

Bearbeiten >> Beim Versuch, die .crt-Datei zu überprüfen, scheint es nicht zu funktionieren:

>> openssl x509 -noout -text -in domain.com.crt
Zertifikat kann nicht geladen werden
16851: Fehler: 0906D06C: PEM-Routinen: PEM_read_bio: keine Startzeile: pem_lib.c: 650: erwartet: VERTRAUENSWÜRDIGES ZERTIFIKAT

Auch >>

>> openssl x509 -text -inform PEM -in domain.com.crt
Zertifikat kann nicht geladen werden
21321: Fehler: 0906D06C: PEM-Routinen: PEM_read_bio: keine Startzeile: pem_lib.c: 650: erwartet: VERTRAUENSWÜRDIGES ZERTIFIKAT
>> openssl x509 -text -inform DER -in domain.com.crt
Zertifikat kann nicht geladen werden
21325: Fehler: 0D0680A8: asn1-Codierroutinen: ASN1_CHECK_TLEN: falsches Tag: tasn_dec.c: 1316:
21325: Fehler: 0D07803A: asn1-Codierroutinen: ASN1_ITEM_EX_D2I: verschachtelt asn1 Fehler: tasn_dec.c: 380: Type = X509

Bearbeiten >> (Cheers für die Hilfe übrigens)

>> grep '^ -----' domain.com.crt
----- BEGINN ZERTIFIKAT -----
----- ENDE ZERTIFIKAT -----

Sie haben dem Unternehmen, das das Zertifikat zur Verfügung gestellt hat, eine E-Mail geschickt

Ich habe die CSR-Datei überprüft, die Sie zur Verfügung gestellt haben, und ich kann Ihnen versichern   dass dies korrekt generiert wurde. Der Fehler, der Sie derzeit sind   Begegnung wird verursacht, weil Sie eine falsche Befehlszeile für verwenden   Installation des CSR. Sie müssen diese domain.com.crt von ändern   Ihre Befehlszeile mit dem entsprechenden Namen Ihrer Domain.

  • Zur Zeit ist der CRT auf mysite.com.crt eingestellt - ich habe domain.com.crt als Beispiel benutzt

33
2017-09-29 16:56


Ursprung


Können Sie uns bitte die Ausgabe von zeigen? grep '^-----' domain.com.crt? - quanta
Williamsowen, der ganze Sinn eines Zertifikats soll jedem gezeigt werden, der sich mit deinem Webserver verbindet; es ist keine private Sache. Würden Sie in Betracht ziehen, das gesamte Zertifikat hier anzuhängen oder zu veröffentlichen, damit wir es direkt betrachten können, anstatt es zu erraten? - MadHatter
Warte, ich sehe, du hast meine Antwort gerade akzeptiert. Bedeutet das, dass es Windows-Zeilenumbrüche waren, die das Problem verursacht haben? - MadHatter
MadHatter - Entschuldigung! Neu dazu, aber ich habe es gerade funktioniert, die Formatierung von der E-Mail, die ich erhalten habe, war weg, konnte euch nicht genug danken! - williamsowen


Antworten:


Ist es möglich, dass die Zeilen ^ M-terminiert sind? Dies ist ein mögliches Problem beim Verschieben von Dateien von Windows auf UNIX-Systeme. Ein einfacher Weg zu überprüfen ist zu verwenden vi in "zeige mir den binären" Modus, mit vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt.

Wenn jede Zeile mit einem Control-M endet, so

-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M

Sie haben eine Datei im Windows-Endformat, und Apache liebt diese nicht.

Zu den Optionen gehören das erneute Verschieben der Datei und mehr Vorsicht. oder mit dem dos2unix Befehl, diese auszublenden; Sie können sie auch in vi entfernen, wenn Sie vorsichtig sind.


45
2017-09-29 21:38



Für mich war es ein Kopier- und Einfügefehler, bei dem die ersten paar Zeichen des Headers weggelassen wurden -----BE... Danke für die Inspiration, um zu überprüfen! - cfi
Danke, das war mein Problem! In Notepad ++ in Windows können Sie den EDIT-EOL-Konvertierungsdialog verwenden, um das korrekte LF-Format zu ändern. Und Sie können das View-Show Symbol-Menü verwenden, um die Fenster CR LF-Zeilenenden tatsächlich zu sehen. - Bjørn
Mein Zertifikat endete einfach als leere Datei. Etwas ist in der Generation kaputt gegangen, denke ich. Diese Antwort ermutigte mich, es zu öffnen und das zu sehen. - flickerfly
Hinweis für Windows-Benutzer: Sie müssen das Zeilenformat wahrscheinlich auch unter Windows in UNIX konvertieren. DOS2UNIX ist kein Windows-Befehl, sondern ein Linux-Befehl. Die gute Nachricht, Git für Windows bietet es. CigWin tut es wahrscheinlich auch, ist sich aber nicht sicher. - Ignacio Segura
Hinweis für Windows-Benutzer: Eine Liste von Berechtigungen in der Registerkarte Eigenschaften / Sicherheit von Windows Explorer wird nach dem Kopieren einer Datei mit eingeschränkten Berechtigungen von einer Netzwerkfreigabe mit Cygwins CP beschädigt. Z. B. sah ich eine "NUL SID", eine deaktivierte Jeder- und Domänenbenutzereinträge. - eel ghEEz


Für jeden, der mit einem ähnlichen Fehler auf diese Seite kommt, wenn er versucht, eine Certificate Signing Request (CSR) zu lesen (beachten Sie, dass OP ein Zertifikat liest): Stellen Sie sicher, dass Sie den richtigen OpenSSL-Befehl verwenden. x509 ist für Zertifikate und req ist für CSRs:

openssl req -in server.csr -text -noout

vs

openssl x509 -in server.crt -text -noout

15
2017-12-26 11:21





Ich bin einfach im Kreis herumgelaufen, und es stellte sich heraus, dass ich die Zertifikate in der falschen Richtung hatte - z.

SSLCertificateFile    /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt

anstatt:

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Etwas, um zu überprüfen, ob dieser Fehler auftritt.


14
2017-07-16 10:46



Habe gerade den gleichen Fehler gemacht, danke, dass ich auf die Lösung hingewiesen habe :-) - rcomblen


In meinem Fall habe ich festgestellt, dass mein Zertifikat verschiedene "-" Zeichen hat. Es muss sich um ein Kopier- / Einfüge-Problem des Administrators gehandelt haben, der das Zertifikat auf den Server gestellt hat, wobei der Texteditor ersetzt wurde - mit einem speziellen Unicode-Zeichen auf dem Weg.

Dies dauerte Stunden zu diagnostizieren, und am Ende habe ich es nur erraten, und das Zertifikat in vi bearbeitet und die vorhandenen "-" Zeichen gelöscht, und sie neu abgetippt.

Hoffe, das hilft jemandem.


10
2018-04-26 14:53





>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Ich vermute, dass Sie ein Problem mit dem Format des Zertifikats haben.

Führen Sie die beiden folgenden Befehle aus und geben Sie uns die Ausgabe:

openssl x509 -text -inform DER -in domain.com.crt 
openssl x509 -text -inform PEM -in domain.com.crt 

8
2017-09-30 03:34



Danke für diese Antwort. Ich konnte feststellen, welches Format meine SAs als ".cer" bereits ".pem" hatten inkognito - javafueled


In meinem Fall bin ich auf die Fehler des OP gestoßen, weil derjenige, der die .crt-Datei für mich erstellt hat, wirklich eine erstellt hat .PEM formatierte Datei und nannte es .crt.

Ich entdeckte dies, indem ich den folgenden hilfreichen Leitfaden ausführte: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cerv-vs-pem-certificates-and-how-to-convert-them

Alles, was ich tun musste, war, mein .crt in ein .pem umzubenennen, und ich war fertig! Der Leitfaden gab an, dass die Fehler aus der OP-Frage implizieren, dass die Eingabedatei bereits PEM-formatiert ist. Daher kann der Versuch, sie aus einem DER-Format in .pem zu konvertieren, nicht durchgeführt werden.


8
2017-10-29 18:51





Stellen Sie sicher, dass Ihre Datei keine nachgestellten oder führenden Leerzeichen in der Zertifikatsdatei enthält. Stellen Sie sicher, dass in der Zertifikatsdatei keine Leerzeichen oder Leerzeichen enthalten sind, indem Sie den gesamten Text auswählen und nach Leerzeichen in einem Nur-Text-Editor suchen.

Überprüfen Sie auch, ob tatsächlich alle konfigurierten Dateien vorhanden und korrekt sind.

ZB: In Ihrem anderen Beitrag sagen Sie, dass Ihre .key-Datei benannt ist meinedomain.com.crt Während Sie sich in der vhost-Konfiguration befinden, haben Sie domain.com.crt

SSLCertificateFile /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
SSLCertificateKeyFile /etc/apache2/domain.ssl/domain.ssl.key/domain.com.key
SSLCertificateChainFile /etc/apache2/domain.ssl/ca.crt
SSLCACertificateFile /etc/apache2/domain.ssl/gs_intermediate_ca.crt

Überprüfen Sie erneut, ob alle oben genannten Dateien wirklich existieren und gültig sind.


3
2017-09-29 17:03



Überprüfen Sie auch, ob die Bindestriche Bindestriche sind. Microsoft-Texteditoren möchten sich ändern -- in –; Das war nicht viel Spaß bei der Fehlersuche. - Shane Madden♦
Yeap, da Sie auf Ubuntu sind, öffnen Sie einfach ein Terminal und verwenden Sie zum Beispiel nano. So werden Sie sicher sein. - George Tasioulis
Hi, danke für dein Feedback - ich habe alles überprüft und alles ist gut. Ich habe versucht, die CRT-Datei zu überprüfen, aber ich bekomme: sudo openssl x509 -noout -text -in domain.com.crt unable to load certificate 16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE - williamsowen
Beginnt die erste Zeile Ihrer Datei domain.com.crt mit -----BEGIN CERTIFICATE----- und die letzte Zeile endet mit -----END CERTIFICATE-----? - George Tasioulis


Sollte jemand anderes auf dieses Problem stoßen und Ihre Apache Fehler Logs sagen etwas wie:

Init: Serverzertifikat konnte nicht aus Datei /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt gelesen werden

Stellen Sie sicher, dass Sie Ihre Schlüssel- und Zertifikatsdateien nicht in den Deklarationen in der Apache-Konfiguration vertauscht haben. Ich hatte den Schlüssel auf meine Zertifikatsdatei und das Zertifikat auf meine Schlüsseldatei gerichtet. Dieser Beitrag hat mir geholfen, das Problem zu lösen, aber ich wollte es als ein weiteres potenzielles Problem / eine mögliche Lösung aufzeigen.


1
2017-07-09 20:41





Mein Problem (mit dem gleichen Fehler beim Installieren eines neuen Servers mit Apache 2.4) war, dass Apache (2.4) die binäre .crt-Datei nicht lesen konnte. Ich importierte es in meinen persönlichen Zertifikatspeicher (mit mmc) und exportierte es als Base-64-codiertes X.509 (.cer). Die exportierte Datei wurde in den gleichen Namen (.crt) umbenannt (in meiner httpd-ssl.conf verwendet) und es funktionierte wieder! Das gleiche Zertifikat funktionierte auf meinem alten Server, vielleicht ist Apache 2.4 strenger als 2.2? Viel Glück.


0
2018-06-05 14:06





In meinem Fall hat es damit zu tun, dass die Stückliste in der Datei vorhanden ist. Man könnte es so strippen:

tail -c +4 ssl.crt > ssl2.crt

Nicht sicher, ob es immer 3 Bytes dauert, also muss der bessere Weg sein:

vi -c 'se nobomb' -c wq ssl.crt

0
2017-12-03 13:33





Ich habe den gleichen Fehler, weil Ich habe .key mit .crt getauscht Dateinamen


0
2018-05-14 13:28