OpenSSL: routines PEM: PEM_read_bio: pas de ligne de départ: pem_lib.c: 703: en attente: CERTIFICAT DE CONFIANCE [fermé]

100

J'ai besoin d'un nom de hachage pour le fichier à publier dans le répertoire CApath de Stunnel. J'ai des certificats dans ce répertoire et ils fonctionnent bien. De plus, j'ai un serveur sert 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'essaye de calculer un hachage de mon nouveau certificat, 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. Veuillez fournir la solution.

PS:

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 c'est un contenu comme

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

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

Quand j'écris

openssl x509 -noout -text -in cert.pem

Dans le panneau de la console, je vois ces informations:

    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
la source
1
Pourrait aider quelqu'un d' autre, je suis arrivé cette erreur quand je tort troqué keyet des certfichiers dans l' httpsobjet de configuration fourni à webpack.configl » devServer.
tao le

Réponses:

43
  1. Puisque vous êtes sous Windows, assurez-vous que votre certificat sous Windows est "compatible", surtout qu'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 "ceci", ouvrez-le avec Writeou Notepad ++ et faites-le convertir en "style" Windows

  2. Essayez d'exécuter openssl x509 -text -inform DER -in server_cert.pemet de voir quelle est la sortie, il est peu probable qu'une clé privée / secrète ne soit pas approuvée, la confiance n'est nécessaire que si vous avez exporté la clé à partir d'un keystore, n'est-ce pas?

Noam Rathaus
la source
2
Essayez d'exécuter ceci, openssl x509 -hash -noout -inil fait une extraction de hachage, voyez si cela aide?
Noam Rathaus
c'est utile. Merci. Mais dans le journal STunnel, je vois l'erreur 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 socketlorsque j'essaye de me connecter
lsv
Cela signifie autre chose, cela signifie que les deux parties n'utilisent pas la même chose capour leur certificat CA
Noam Rathaus
1
Merci, openssl x509 -text -inform DER -in server_cert.pemconverti mon p7bcertificat encodé (?) En quelque chose utilisable.
Koen.
3
Mon problème n'était pas les fins de ligne CRLF comme décrit ici, mais cette suggestion était suffisante pour me mettre sur la bonne voie. Mon problème était que mon fichier était enregistré au format Unicode sur deux octets avec une nomenclature, et openssl pour Windows ne pouvait pas gérer cela. J'ai réenregistré comme ascii et cela a fonctionné.
Elroy Flynn
35

Une autre cause possible de cela est d'essayer d'utiliser le module x509 sur quelque chose qui n'est pas x509

Le certificat du 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
Rondo
la source
14

Ma situation était un peu différente. La solution était de supprimer le .pem de tout ce qui se trouvait en dehors des sections CERTIFICATE et PRIVATE KEY et d'inverser l'ordre dans lequel ils apparaissaient. Après la conversion du fichier 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-----
Gustavo da Silva Serra
la source
M kinda noob, veuillez me suggérer .. Comment modifier ce fichier dans Mac
Shubhamkes
J'ai eu une erreur similaire. Inverser l'ordre a fonctionné pour moi.
Jon Richardson
Mes clés sont venues dans des fichiers séparés dont j'avais besoin pour créer un nouveau fichier:cat $SOURCE/privkey.pem $SOURCE/fullchain.pem > server.pem
ErichBSchulz
14

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

SpiRail
la source
2
au moins je ne suis pas le seul à avoir commis cette erreur ... je suis surpris que le module ne nous en alerte pas.
edwardsmarkf
1
cela m'a pris des heures à travailler. Tout en commençant par une erreur cryptique de xmlsec1,key is not found
Amichai Schreiber
8

J'ai eu le même problème en utilisant Windows, obtenu s'il est résolu en l'ouvrant dans Notepad ++ et en changeant l'encodage de "UCS-2 LE BOM" à "UTF-8".

peter n
la source
6

Changez l'encodage dans notepad ++ UTF-8 avec BOM . C'est comme ça que ça a marché pour moi

Yoda Zemichael
la source
1
Oui! Cela a fonctionné pour moi. Remarque Les certificats PEM exportés depuis l'utilitaire Keychain d'Apple n'ont pas de nomenclature et cela perturbe certains programmes.
HughHughTeotl
5

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

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

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

Vous pouvez voir à partir des options de ligne de commande pour open ssl que les seules options pour encrypt -> decryptaller dans une direction 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, chiffrer 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 private key encrypt -> public key decryptdirection est appelée «signature» pour la différencier d'une technique qui peut réellement sécuriser les 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 .

TrophyGeek
la source