GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je imprimer/afficher le nom d'utilisateur principal ou l'UPN d'un certificat p12 sous Linux ?

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.)


Linux
  1. Comment puis-je modifier le $PATH sous Linux ?

  2. Comment puis-je modifier le groupe par défaut d'un utilisateur sous Linux ?

  3. Comment puis-je rechercher un nom d'utilisateur par identifiant sous Linux?

  4. Comment puis-je imprimer le contenu au lieu du nom de fichier à l'aide de la commande linux find ?

  5. Comment puis-je répertorier les attributs d'utilisateur Active Directory à partir d'un ordinateur Linux ?

Comment utiliser la commande usermod sous Linux

Comment connaître les groupes d'un utilisateur Linux

Comment utiliser la commande id sous Linux :5 exemples utiles

Comment utiliser la commande ulimit sous Linux

Comment changer le nom d'hôte sur Debian Linux

Comment puis-je attribuer un mot de passe initial/par défaut à un utilisateur sous Linux ?