it-swarm.com.de

OpenSSL: PEM-Routinen: PEM_read_bio: keine Startzeile: pem_lib.c: 703: Erwartet: TRUSTED CERTIFICATE

Ich benötige einen Hash-Namen für die Datei, um sie im CApath-Verzeichnis von Stunnel zu veröffentlichen. 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, erhalte ich eine Fehlermeldung:

/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 liefern Sie die Lösung.

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, das ist Root_CA und es ist inhaltlich so ähnlich

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

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

Wenn ich schreibe

openssl x509 -noout -text -in cert.pem

In der Konsole sehe ich diese Information:

    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:
...............
90
lsv
  1. Da Sie unter Windows arbeiten, vergewissern Sie sich, dass Ihr Zertifikat unter Windows "kompatibel" ist, und vor allem, dass es kein ^M am Ende jeder Zeile

    Wenn Sie es öffnen, sieht es so aus:

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

    Um "dieses" Problem zu lösen, öffne es mit Write oder Notepad ++ und lasse es in den Windows "-Stil" konvertieren.

  2. Versuche openssl x509 -text -inform DER -in server_cert.pem und sehen, was die Ausgabe ist, ist es unwahrscheinlich, dass ein privater/geheimer Schlüssel nicht vertrauenswürdig ist. Vertrauen ist nur erforderlich, wenn Sie den Schlüssel aus einem Keystore exportiert haben, oder?

37
nrathaus

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

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

Damit,

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

Meine Situation war etwas anders. Die Lösung bestand darin, die .pem-Datei von allen Abschnitten außerhalb der Abschnitte CERTIFICATE und PRIVATE KEY zu entfernen und die Reihenfolge, in der sie angezeigt wurden, umzukehren. Nach der Konvertierung von pfx zu 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 der Korrektur der Datei war es nur:

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Ich hatte das gleiche Problem unter Windows, das behoben wurde, indem ich es in Notepad ++ öffnete und die Codierung von "UCS-2 LE BOM" in "UTF-8" änderte.

8
peter n

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

6
SpiRail

Ändern Sie die Codierung im Editor ++ TF-8 mit Stückliste. So hat es bei mir funktioniert

5
Yoda Zemichael

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 aus Designgründen nicht zulässig .

Sie können an den Befehlszeilenoptionen für open ssl erkennen, dass die einzigen Optionen für encrypt -> decrypt in 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, können Sie nur überprüfen, ob der Autor Zugriff auf den privaten Schlüssel hat.

Das private key encrypt -> public key decrypt Die Richtung 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 Übersichtlichkeit. Lesen Sie diese Antwort für weitere Informationen .

4
TrophyGeek