Le fichier PKCS#12 contient généralement un certificat X.509 et sa clé privée associée. Toutes les informations sont stockées dans le certificat, vous devez donc d'abord les extraire :
openssl pkcs12 -in foo.p12 -out foo.pem
(foo.pem
contiendra à la fois le certificat et la clé privée.)
L'UPN est stocké en tant que type spécial de "subjectAltName" dans le certificat. Malheureusement, OpenSSL ne sait pas encore afficher les UPN (ainsi que certains autres types de noms), donc la commande habituelle pour examiner les certificats (openssl x509 -noout -text < foo.pem
) ne fonctionnera pas. Au lieu de cela, vous aurez besoin d'outils de bas niveau.
Séparez le certificat dans un fichier qui lui est propre (vous pouvez également le faire avec un éditeur de texte) :
openssl x509 < foo.pem > foo.cert
Imprimez le certificat en tant que structure ASN.1 :
openssl asn1parse -i -dump < foo.cert
Trouvez les lignes qui décrivent l'extension subjectAltName :
742:d=4 hl=3 l= 200 cons: SEQUENCE
745:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Subject Alternative Name
750:d=5 hl=3 l= 192 prim: OCTET STRING [HEX DUMP]:3081BDA036...
Et lancez asn1parse
encore une fois, cette fois en lui disant de creuser plus profondément dans le contenu de l'extension (qui est encore une autre structure ASN.1) - dans cet exemple, la valeur (ligne "OCTET STRING") commence à l'offset 750 :
openssl asn1parse -i -dump -strparse 750 < foo.cert
Enfin, recherchez l'UPN dans le vidage :
59:d=1 hl=2 l= 40 cons: cont [ 0 ]
61:d=2 hl=2 l= 10 prim: OBJECT :Microsoft Universal Principal Name
73:d=2 hl=2 l= 26 cons: cont [ 0 ]
75:d=3 hl=2 l= 24 prim: UTF8STRING :[email protected]
Si vous avez installé des outils GnuTLS, il existe un moyen plus rapide mais pas aussi fiable. Une fois que vous avez extrait le certificat, vous pouvez le transmettre à certtool -i < foo.cert
, et il imprimera le contenu brut même des noms qu'il ne reconnaît pas :
Subject Alternative Name (not critical):
otherName OID: 1.3.6.1.4.1.311.20.2.3
otherName DER: 0c1867726177697479404e554c4c524f5554452e45552e4f5247
otherName ASCII: [email protected]
Recherchez l'OID 1.3.6.1.4.1.311.20.2.3
; il sera suivi du contenu brut du nom. Heureusement, ils se composent d'un seul UTF8String, de sorte que la sortie "otherName ASCII" est facilement compréhensible - il suffit de supprimer les deux premiers octets (affichés ici sous forme de points).
Un moyen plus simple serait d'essayer simplement d'entrer votre propre identifiant Windows; l'UPN est toujours sous la forme [email protected]
.
(C'est un peu triste que de tous les outils que j'ai essayés, presque aucun d'entre eux ne sache comment interpréter des types de noms aussi simples et couramment utilisés - même s'ils sont propriétaires.)