OpenSSL: PEM-Routinen: PEM_read_bio: keine Startzeile: pem_lib.c: 703: Erwarten: VERTRAUENES ZERTIFIKAT [geschlossen]

100

Ich benötige einen Hash-Namen für die Datei zum Posten im CApath-Verzeichnis von Stunnel. Ich habe einige Zertifikate in diesem Verzeichnis und sie funktionieren gut. Außerdem habe ich einen Server-Sert und einen Server-Schlüssel:

cert = c:\Program Files (x86)\stunnel\server_cert.pem 
key = c:\Program> Files (x86)\stunnel\private\server_key.pem

Wenn ich versuche, einen Hash meines neuen Zertifikats zu berechnen, wird folgende Fehlermeldung angezeigt:

/etc/pki/tls/misc/c_hash cert.pem

unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

Soweit ich weiß, muss ich mein Zertifikat unterschreiben, aber ich verstehe nicht, wie ich das machen kann. Bitte geben Sie die Lösung an.

PS:

Die Nachricht

unable to load certificate 140603809879880:error:0906D06C:PEM
routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE:

gepostet, als ich c_hash für cert.pem gemacht habe Dies ist nicht server_cert.pem, dies ist Root_CA und es ist so etwas wie Inhalt

-----BEGIN CERTIFICATE-----  
...6UXBNSDVg5rSx60=.. 

-----END CERTIFICATE-----

Wenn ich schreibe

openssl x509 -noout -text -in cert.pem

Im Konsolenfenster sehe ich diese Informationen:

    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=BE, ST=BB, L=BB, O=BANKSYS NV, OU=SCY, CN=TEST Root CA
        Validity
            Not Before: May 31 08:06:40 2005 GMT
            Not After : May 31 08:06:40 2020 GMT
        Subject: C=BE, ST=BB, L=BB, O=BB NV, OU=SCY, CN=TEST Root CA
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:82:c8:58:1e:e5:7a:b2:63:a6:15:bd:f9:bb:1f:
............
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Subject Key Identifier:
                76:70:AB:92:9B:B1:26:CE:9E:93:D8:77:4F:78:0D:B8:D4:6C:DA:C6
    Signature Algorithm: sha1WithRSAEncryption
         2c:7e:bd:3f:da:48:a4:df:8d:7c:96:58:f7:87:bd:e7:16:24:
...............
lsv
quelle
1
Könnte jemand anderem helfen, ich habe diesen Fehler erhalten, als ich falsch getauscht keyund certDateien im httpsKonfigurationsobjekt an webpack.config's geliefert habe devServer.
Tao

Antworten:

43
  1. Da Sie unter Windows arbeiten, stellen Sie sicher, dass Ihr Zertifikat in Windows "kompatibel" ist, vor allem, dass es nicht vorhanden ist ^M am Ende jeder Zeile steht

    Wenn Sie es öffnen, sieht es folgendermaßen aus:

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

    Um "dies" zu lösen, öffnen Sie es mit Writeoder Notepad ++ und lassen Sie es in Windows "style" konvertieren.

  2. Versuchen Sie zu starten openssl x509 -text -inform DER -in server_cert.pemund zu sehen, was die Ausgabe ist. Es ist unwahrscheinlich, dass ein privater / geheimer Schlüssel nicht vertrauenswürdig ist. Vertrauen ist nur erforderlich, wenn Sie den Schlüssel aus einem Schlüsselspeicher exportiert haben, oder?

Noam Rathaus
quelle
2
Versuchen openssl x509 -hash -noout -inSie dies auszuführen, es führt Hash-Extraktion durch, sehen Sie, ob es hilft?
Noam Rathaus
das ist nützlich. Vielen Dank. Aber im STunnel-Protokoll sehe ich den Fehler, SSL_accept: 14094418: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socketwenn ich versuche, eine Verbindung
herzustellen
Das bedeutet etwas ganz anderes, es bedeutet, dass beide Seiten nicht dasselbe cafür ihr CA-Zertifikat verwenden
Noam Rathaus
1
Danke, habe openssl x509 -text -inform DER -in server_cert.pemmein p7bverschlüsseltes (?) Zertifikat in etwas Verwendbares konvertiert .
Koen.
3
Mein Problem waren nicht die hier beschriebenen CRLF-Leitungsenden, aber dieser Vorschlag reichte aus, um mich auf den richtigen Weg zu bringen. Mein Problem war, dass meine Datei mit einer Stückliste als Doppelbyte-Unicode gespeichert wurde und openssl für Windows damit nicht umgehen konnte. Ich speicherte als ASCII und es funktionierte.
Elroy Flynn
35

Eine andere mögliche Ursache hierfür ist der Versuch, das x509-Modul für etwas zu verwenden, das nicht x509 ist

Das Serverzertifikat hat das Format x509, der private Schlüssel ist jedoch rsa

So,

openssl rsa -noout -text -in privkey.pem
openssl x509 -noout -text -in servercert.pem
Rondo
quelle
14

Meine Situation war etwas anders. Die Lösung bestand darin, das .pem von allem außerhalb der Abschnitte CERTIFICATE und PRIVATE KEY zu entfernen und die Reihenfolge umzukehren, in der sie angezeigt wurden. Nach der Konvertierung von pfx in pem sah das Zertifikat folgendermaßen aus:

Bag Attributes
localKeyID: ...
issuer=...
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Bag Attributes
more garbage...
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

Nach dem Korrigieren der Datei war es nur:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Gustavo da Silva Serra
quelle
M irgendwie noob, pls schlagen mich vor .. Wie man diese Datei in mac
shubhamkes
Ich hatte einen ähnlichen Fehler. Das Umkehren der Reihenfolge hat bei mir funktioniert.
Jon Richardson
Meine Schlüssel kamen in separaten Dateien, die ich zum Erstellen einer neuen Datei benötigte:cat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
ErichBSchulz
14

Mein Fehler war einfach die Verwendung der CSR-Datei anstelle der CERT-Datei.

SpiRail
quelle
2
Zumindest bin ich nicht der einzige, der diesen Fehler gemacht hat ... Ich bin überrascht, dass das Modul uns nicht darauf aufmerksam macht.
Edwardsmarkf
1
Ich habe Stunden gebraucht, um zu trainieren. Alles beginnend mit einem kryptischen Fehler von xmlsec1,key is not found
Amichai Schreiber
8

Ich hatte das gleiche Problem mit Windows, das behoben wurde, indem es in Notepad ++ geöffnet und die Codierung von "UCS-2 LE BOM" in "UTF-8" geändert wurde.

peter n
quelle
6

Ändern Sie die Codierung in Notepad ++ UTF-8 mit Stückliste . So hat es bei mir funktioniert

Yoda Zemichael
quelle
1
Ja! Das hat bei mir funktioniert. Hinweis PEM-Zertifikate, die aus dem Apple Keychain-Dienstprogramm exportiert wurden, haben keine Stückliste. Dies stört einige Programme.
HughHughTeotl
5

Sie können diesen irreführenden Fehler erhalten, wenn Sie naiv versuchen, dies zu tun:

[clear] -> Private Key Encrypt -> [encrypted] -> Public Key Decrypt -> [clear]

Das Verschlüsseln von Daten mit einem privaten Schlüssel ist nicht zulässig .

Sie können aus den Befehlszeilenoptionen für open ssl ersehen, dass die einzigen Optionen encrypt -> decryptin eine Richtung gehen public -> private.

  -encrypt        encrypt with public key
  -decrypt        decrypt with private key

Die andere Richtung wird absichtlich verhindert, da öffentliche Schlüssel grundsätzlich "erraten werden können". Wenn Sie also mit einem privaten Schlüssel verschlüsseln, müssen Sie nur überprüfen, ob der Autor Zugriff auf den privaten Schlüssel hat.

Die private key encrypt -> public key decryptRichtung wird als "Signieren" bezeichnet, um sie von einer Technik zu unterscheiden, mit der Daten tatsächlich gesichert werden können.

  -sign           sign with private key
  -verify         verify with public key

Hinweis: Meine Beschreibung dient der Klarheit. Lesen Sie diese Antwort für weitere Informationen .

TrophyGeek
quelle