Die PKCS#12-Datei enthält normalerweise ein X.509-Zertifikat und den dazugehörigen privaten Schlüssel. Alle Informationen sind im Zertifikat gespeichert, daher müssen Sie es zuerst extrahieren:
openssl pkcs12 -in foo.p12 -out foo.pem
(foo.pem
enthält sowohl das Zertifikat als auch den privaten Schlüssel.)
Der UPN wird als besonderer Typ von „subjectAltName“ im Zertifikat gespeichert. Leider weiß OpenSSL noch nicht, wie UPNs (sowie einige andere Arten von Namen) angezeigt werden sollen, sodass der übliche Befehl zum Prüfen von Zertifikaten (openssl x509 -noout -text < foo.pem
) wird nicht funktionieren. Stattdessen benötigen Sie Low-Level-Tools.
Trennen Sie das Zertifikat in eine eigene Datei (Sie können dies auch mit einem Texteditor tun):
openssl x509 < foo.pem > foo.cert
Drucken Sie das Zertifikat als ASN.1-Struktur:
openssl asn1parse -i -dump < foo.cert
Suchen Sie die Zeilen, die die Erweiterung subjectAltName beschreiben:
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...
Und führen Sie asn1parse
aus erneut, diesmal mit der Aufforderung, tiefer in den Inhalt der Erweiterung einzudringen (die eine weitere ASN.1-Struktur sind) – in diesem Beispiel beginnt der Wert („OCTET STRING“-Zeile) bei Offset 750:
openssl asn1parse -i -dump -strparse 750 < foo.cert
Suchen Sie schließlich im Dump nach dem UPN:
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]
Wenn Sie GnuTLS-Tools installiert haben, gibt es einen schnelleren Weg, aber nicht so zuverlässig. Sobald Sie das Zertifikat extrahiert haben, können Sie es an certtool -i < foo.cert
weiterleiten , und es wird den rohen Inhalt sogar von Namen drucken, die es nicht erkennt:
Subject Alternative Name (not critical):
otherName OID: 1.3.6.1.4.1.311.20.2.3
otherName DER: 0c1867726177697479404e554c4c524f5554452e45552e4f5247
otherName ASCII: [email protected]
Suchen Sie nach der OID 1.3.6.1.4.1.311.20.2.3
; Es folgt der Rohinhalt des Namens. Glücklicherweise bestehen sie aus einem einzigen UTF8String, sodass die Ausgabe von „otherName ASCII“ leicht verständlich ist – entfernen Sie einfach die ersten beiden Bytes (hier als Punkte dargestellt).
Eine einfachere Möglichkeit wäre, einfach zu versuchen, Ihre eigene Windows-Anmeldung einzugeben. der UPN hat immer die Form [email protected]
.
(Es ist ein bisschen traurig, dass von allen Tools, die ich ausprobiert habe, fast keines weiß, wie man solch einfache und häufig verwendete – wenn auch proprietäre – Namenstypen interpretiert.)