GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu vytisknout/zobrazit hlavní uživatelské jméno nebo UPN certifikátu p12 v systému Linux?

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


Linux
  1. Jak odebrat uživatele v Linuxu pomocí příkazového řádku

  2. Jak používat příkaz id v Linuxu:5 užitečných příkladů

  3. Jak nastavit název vlákna v Linuxu pthreads?

  1. Jak mohu získat stav klávesnice v Linuxu?

  2. Jak získám uživatelské jméno v souboru Makefile?

  3. Jak mohu odstranit uživatele v linuxu, když systém říká, že se aktuálně používá v procesu

  1. Je Rsync ~/foo Target/foo stejný jako Rsync ~/foo/ Target/foo/?

  2. Jak mohu přiřadit počáteční/výchozí heslo uživateli v Linuxu?

  3. Jak mohu vytisknout obsah místo názvu souboru pomocí příkazu linux find?