2012-11-08 3 views
7

JKJScertificat de vérification de OpenSSL sur Linux

J'ai cette chaîne de certificats: rcert.pem (auto-signé) -> -> scert.pem ccert.pem

Les trois certificats sont généré par moi.No connexion internet est utilisée n'importe où.C'est un travail hors ligne parfait. Maintenant, voici quelques commandes et leur production:

[email protected]:~/hari$ openssl verify rcert.pem 
rcert.pem: C = IN, ST = OM, L = OM, O = HARI, OU = HARI, CN = OM, emailAddress = OM 
error 18 at 0 depth lookup:self signed certificate 
OK 
[email protected]:~/hari$ openssl verify -CAfile rcert.pem scert.pem 
scert.pem: OK 
[email protected]:~/hari$ openssl verify -CAfile rcert.pem rcert.pem 
rcert.pem: OK 
[email protected]:~/hari$ openssl verify -CAfile rcert.pem -untrusted scert.pem ccert.pem 
ccert.pem: C = IN, ST = HARI, L = HARI, O = HARI, OU = HARI, CN = HARI, emailAddress = HARI 
error 24 at 1 depth lookup:invalid CA certificate 
OK 

Pourquoi erreur 24 created.How pour l'enlever est-il quelque chose comme fiable ou non?

Merci.

Répondre

17

JKJS

obtenu réponse à ma propre question:

1) certificat créé CA racine par ces commandes:

openssl req -newkey rsa:1024 -sha1 -keyout rootkey.pem -out rootreq.pem 

openssl x509 -req -in rootreq.pem -sha1 -signkey rootkey.pem -out rootcert.pem 

2) certificat installé CA comme certificat de confiance par les commandes suivantes:

sudo mkdir /usr/share/ca-certificates/extra 

sudo cp rootcert.pem /usr/share/ca-certificates/extra/rootcert.crt 

sudo dpkg-reconfigure ca-certificates 

sudo update-ca-certificates 

3) Certificat intermédiaire créé et signé par root CA par les commandes suivantes:

openssl req -newkey rsa:1024 -sha1 -keyout skey.pem -out sreq.pem 

sudo openssl x509 -req -in sreq.pem -sha1 -CA /etc/ssl/certs/rootcert.pem -CAkey rootkey.pem -CAcreateserial -out scert.pem 

4) certificat client créé signé par CA intermédiaire par les commandes suivantes:

openssl req -newkey rsa:1024 -sha1 -keyout ckey.pem -out creq.pem 

openssl x509 -req -in creq.pem -sha1 -CA scert.pem -CAkey skey.pem -CAcreateserial -out ccert.pem 

maintenant, chaîne de confiance fonctionne bien:

1) vérification de la racine CA

openssl verify rootcert.pem 
rootcert.pem: OK 

2) vérification de CA

intermédiaire
openssl verify scert.pem 
scert.pem: OK 

3) vérification du certificat client

openssl verify -CAfile scert.pem ccert.pem 
ccert.pem: OK 
+1

bien sur la recherche de fait la solution. Un mini-tutoriel sympa et complet. Petite remarque pour ceux qui trouvent cela maintenant, changez-le en 2048 octets et sha256, car ils sont plus courants ces jours-ci. – YorickH

+2

Attention, les commandes de vérification de la chaîne de certificats ci-dessus sont plus permissives que vous pourriez vous attendre! Par défaut, en plus de vérifier le fichier CA donné, ils vérifient également les éventuelles AC correspondantes dans le répertoire certs du système, par exemple./etc/ssl/certs. Pour éviter ce comportement et vous assurer que vous vérifiez par rapport à votre certificat CA particulier, passez également une option -CApath avec un répertoire inexistant, par exemple: "openssl verify -CApath nosuchdir -CAfile scert.pem ccert.pem" – DSimon

+0

c'est très cool, fonctionne sur Linux. mais comment puis-je installer le certificat root sur mac ?? – prayagupd

Questions connexes