web-dev-qa-db-fra.com

Comment déterminer le type de certificat à partir d'un fichier

Il ne semble pas exister de convention de nommage standard pour les certificats OpenSSL. J'aimerais donc savoir s'il existe une commande simple pour obtenir des informations importantes sur tout certificat OpenSSL, quel que soit son type. J'aimerais connaître au moins le type de certificat (x509, RSA, DSA) et s'il s'agit d'une clé publique ou privée. En examinant le contenu d'un certificat que je viens d'extraire d'un fichier PKCS12, aucun de ceux-ci n'est explicitement affiché.

25
l0b0

Tout d'abord, vous avez quelques problèmes de terminologie:

  • la norme X509 définit les certificats. RSA et DSA sont deux des algorithmes à clé publique pouvant être utilisés dans ces certificats.
  • les certificats sont utilisés pour contenir des clés publiques et jamais des clés privées.
  • PKCS # 12 est un standard pour un conteneur pouvant contenir un certificat client X509 et les clés privées correspondantes, ainsi que (éventuellement) les certificats X509 des autorités de certification ayant signé le ou les certificats client X509.

Donc, si vous examinez un fichier PKCS # 12 (généralement une extension .p12), alors vous savez déjà:

  • Il contient au moins un certificat client X509, qui contient une clé publique. et
  • Il contient les clés privées correspondantes.

Tout ce que vous ne savez pas, c'est si ces certificats et clés privées sont RSA ou DSA. Vous pouvez vérifier cela en extrayant le (s) certificat (s), puis les examiner:

openssl pkcs12 -in mycert.p12 -clcerts -nokeys -out mycert.crt
openssl x509 -in mycert.crt -text

La sortie texte de la commande openssl x509 doit inclure une section Subject Public Key, qui comprendra des champs permettant de savoir s’il s’agit d’une clé RSA ou DSA (ainsi que de la taille de la clé).

36
caf

Les certificats peuvent également être limités à certaines utilisations. 

Par exemple, il peut être restreint afin de ne pas pouvoir être utilisé comme autorité de certification. Lisez aussi plus dans cet article de StackOverflow .

0
Wilt