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:
...............
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"
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?
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
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-----
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".
Mon erreur a simplement été d'utiliser le fichier CSR au lieu du fichier CERT.
Changer le codage dans le bloc-notes ++ TF-8 avec nomenclature. C'est comme ça que ça a fonctionné pour moi
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 .