web-dev-qa-db-fra.com

OpenSSL: routines PEM: PEM_read_bio: aucune ligne de départ: pem_lib.c: 703: En attente: TRUSTED CERTIFICATE

J'ai besoin d'un nom de hachage pour le fichier à publier dans le répertoire CApath de Stunnel. J'ai quelques certs dans ce répertoire et ils fonctionnent bien. De plus, j'ai un serveur et une clé de serveur:

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

Lorsque j'essaie de calculer le hash de mon nouveau cert, j'obtiens une erreur:

/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

Si je comprends bien, je dois signer mon certificat, mais je ne comprends pas comment je peux le faire. S'il vous plaît, fournissez la solution.

P.S .:

Le message

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

posté quand j'ai fait c_hash pour cert.pem Ce n'est pas server_cert.pem, c'est Root_CA et son contenu est quelque chose comme

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

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

Quand j'écris

openssl x509 -noout -text -in cert.pem

Dans le panneau de la console, je vois cette 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. Puisque vous êtes sous Windows, assurez-vous que votre certificat est compatible "dans Windows", surtout s'il n'a pas ^M à la fin de chaque ligne.

    Si vous l'ouvrez, cela ressemblera à ceci:

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

    Pour résoudre "cela", ouvrez-le avec Write ou Notepad ++ et faites-le convertir en Windows "style"

  2. Essayez de lancer openssl x509 -text -inform DER -in server_cert.pem et voyez quelle est la sortie, il est peu probable qu'une clé privée/secrète ne soit pas fiable, la confiance est uniquement nécessaire si vous avez exporté la clé à partir d'un fichier de clés, n'est-ce pas?

37
nrathaus

Une autre cause possible est d’essayer d’utiliser le module x509 sur quelque chose qui n’est pas x509.

Le certificat de serveur est au format x509, mais la clé privée est rsa

Alors,

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

Ma situation était un peu différente. La solution consistait à débarrasser le .pem de tout ce qui se trouvait en dehors des sections CERTIFICATE et PRIVATE KEY et à inverser l'ordre dans lequel elles apparaissaient. Après la conversion de pfx en fichier pem, le certificat ressemblait à ceci:

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

Après avoir corrigé le fichier, c'était juste:

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

J'avais le même problème sous Windows, si je l'ai corrigé en l'ouvrant dans Notepad ++ et en remplaçant l'encodage de "UCS-2 LE BOM" par "UTF-8".

8
peter n

Mon erreur a simplement été d'utiliser le fichier CSR au lieu du fichier CERT.

6
SpiRail

Changer le codage dans le bloc-notes ++ TF-8 avec nomenclature. C'est comme ça que ça a fonctionné pour moi

5
Yoda Zemichael

Vous pouvez obtenir cette erreur trompeuse si vous naïvement essayez de faire ceci:

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

Le cryptage des données à l'aide d'une clé privée n'est pas autorisé .

Vous pouvez voir dans options de ligne de commande pour open ssl que les seules options pour encrypt -> decrypt vont dans un sens public -> private.

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

L’autre direction est intentionnellement empêchée parce que les clés publiques "peuvent être devinées". Ainsi, le cryptage avec une clé privée signifie que la seule chose que vous gagnez est de vérifier que l'auteur a accès à la clé privée.

La direction private key encrypt -> public key decrypt est appelée "signature" pour la différencier d'une technique pouvant réellement sécuriser des données.

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

Remarque: ma description est une simplification pour plus de clarté. Lisez cette réponse pour plus d'informations .

4
TrophyGeek