Soubor PKCS#12 obvykle obsahuje certifikát X.509 a jeho přidružený soukromý klíč. Všechny informace jsou uloženy v certifikátu, takže je nejprve musíte extrahovat:
openssl pkcs12 -in foo.p12 -out foo.pem
(foo.pem
bude obsahovat certifikát a soukromý klíč.)
UPN je v certifikátu uložen jako speciální typ "subjectAltName". OpenSSL bohužel zatím neumí zobrazovat UPN (stejně jako některé další typy jmen), takže obvyklý příkaz pro zkoumání certifikátů (openssl x509 -noout -text < foo.pem
) to nebude fungovat. Místo toho budete potřebovat nástroje nízké úrovně.
Oddělte certifikát do vlastního souboru (můžete to provést také pomocí textového editoru):
openssl x509 < foo.pem > foo.cert
Vytiskněte certifikát jako strukturu ASN.1:
openssl asn1parse -i -dump < foo.cert
Najděte řádky, které popisují příponu 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...
A spusťte asn1parse
znovu, tentokrát mu říká, aby se ponořil hlouběji do obsahu rozšíření (což je další struktura ASN.1) – v tomto příkladu začíná hodnota (řádek "OCTET STRING") na offsetu 750:
openssl asn1parse -i -dump -strparse 750 < foo.cert
Nakonec vyhledejte UPN ve výpisu:
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]
Pokud máte nainstalované nástroje GnuTLS, existuje rychlejší způsob, ale ne tak spolehlivý. Jakmile budete mít certifikát extrahován, můžete jej odeslat do certtool -i < foo.cert
a vytiskne nezpracovaný obsah i názvů, které nepozná:
Subject Alternative Name (not critical):
otherName OID: 1.3.6.1.4.1.311.20.2.3
otherName DER: 0c1867726177697479404e554c4c524f5554452e45552e4f5247
otherName ASCII: [email protected]
Hledejte OID 1.3.6.1.4.1.311.20.2.3
; bude následovat nezpracovaný obsah názvu. Naštěstí se skládají z jednoho řetězce UTF8, takže výstup „otherName ASCII“ je snadno srozumitelný – stačí odstranit první dva bajty (zde zobrazeny jako tečky).
Jednodušším způsobem by bylo zkusit zadat své vlastní přihlašovací jméno Windows; UPN je vždy ve tvaru [email protected]
.
(Je trochu smutné, že ze všech nástrojů, které jsem vyzkoušel, téměř žádný z nich neví, jak interpretovat tak jednoduché a běžně používané – i když proprietární – typy jmen.)