J'ai créé une hiérarchie de chaîne comme celle-ci.
root-ca ==> signing-ca ==> subordinate-ca ==> server
Il est mentionné que pour créer un ensemble de chaînes, le plus bas devrait être le premier.
$ cat server.crt subordinate-ca.crt signing-ca.crt > server.pem
Mais la vérification échoue.
$ openssl verify -CAfile root-ca.crt server.pem
error 20 at 0 depth lookup:unable to get local issuer certificate
Cependant, si je change l'ordre, cela semble fonctionner.
$ cat signing-ca.crt subordinate-ca.crt server.crt > server.pem
$ openssl verify -CAfile root-ca.crt server.pem
server.pem: OK
Alors, quelle serait l'erreur ici?
La chaîne après "chat" ressemble à celle ci-dessous.
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
Plus d'infos: Selon " http://www.herongyang.com/crypto/openssl_verify_2.html ", j'effectue le test suivant, qui fonctionne.
$ cat signing-ca.crt subordinate-ca.crt > inter.crt
$ openssl verify -CAfile root-ca.crt -untrusted inter.crt server.crt
server.crt: OK
Cela signifie-t-il que tous les liens sont bons?
OK, j'ai finalement découvert que cela ne pouvait pas être fait via la ligne de commande OpenSSL (ou du moins facilement). http://openssl.6102.n7.nabble.com/check-certificate-chain-in-a-pem-file-td43871.html
La commande initiale est en fait à l'envers. Les certificats doivent être suivis de du certificat émetteur jusqu'à ce que le dernier certificat soit émis par une racine connue per RFC 5246 de l'IETF, section 7.4.2 =
Ceci est une séquence (chaîne) de certificats. Le certificat de l'expéditeur DOIT apparaître en premier dans la liste. Chaque certificat suivant DOIT certifier directement celui qui le précède.
Voir aussi SSL: erreur: 0B080074: routines de certificat x509: X509_check_private_key: incompatibilité des valeurs de clé pour les techniques de dépannage.
Mais je ne sais toujours pas pourquoi ils ont écrit la spécification afin que l'ordre compte.