GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich den Benutzerprinzipalnamen oder UPN eines p12-Zertifikats unter Linux drucken/anzeigen?

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


Linux
  1. So entfernen Sie Benutzer in Linux über die Befehlszeile

  2. So verwenden Sie den id-Befehl unter Linux:5 nützliche Beispiele

  3. Wie kann ich die Standardgruppe eines Benutzers in Linux ändern?

  4. Wie kann ich unter Linux einen Benutzernamen anhand der ID suchen?

  5. Wie kann ich die Active Directory-Benutzerattribute von einem Linux-Computer auflisten?

So verwenden Sie den usermod-Befehl unter Linux

Wie man die Gruppen eines Linux-Benutzers kennt

So verwenden Sie den ulimit-Befehl unter Linux

So ändern Sie den Hostnamen unter Debian Linux

Wie kann ich einem Benutzer unter Linux ein Anfangs-/Standardkennwort zuweisen?

Wie kann ich Inhalte anstelle des Dateinamens mit dem Linux-Suchbefehl drucken?