GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mencetak/menampilkan Nama Prinsipal Pengguna atau UPN sertifikat p12 di Linux?

File PKCS#12 biasanya berisi sertifikat X.509 dan kunci privat terkait. Semua informasi disimpan dalam sertifikat, jadi Anda harus mengekstraknya terlebih dahulu:

openssl pkcs12 -in foo.p12 -out foo.pem

(foo.pem akan berisi sertifikat dan kunci pribadi.)

UPN disimpan sebagai tipe khusus "subjectAltName" dalam sertifikat. Sayangnya, OpenSSL belum mengetahui cara menampilkan UPN (serta beberapa jenis nama lainnya), jadi perintah biasa untuk memeriksa sertifikat (openssl x509 -noout -text < foo.pem ) tidak akan berfungsi. Sebagai gantinya, Anda memerlukan alat tingkat rendah.

Pisahkan sertifikat menjadi file miliknya sendiri (Anda juga dapat melakukannya dengan editor teks):

openssl x509 < foo.pem > foo.cert

Cetak sertifikat sebagai struktur ASN.1:

openssl asn1parse -i -dump < foo.cert

Temukan baris yang mendeskripsikan ekstensi 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...

Dan jalankan asn1parse sekali lagi, kali ini menyuruhnya untuk menggali lebih dalam konten ekstensi (yang merupakan struktur ASN.1 lainnya) – dalam contoh ini, nilai ("OCTET STRING" line) dimulai pada offset 750:

openssl asn1parse -i -dump -strparse 750 < foo.cert

Terakhir, cari UPN di dump:

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]

Jika Anda menginstal alat GnuTLS, ada cara yang lebih cepat tetapi tidak dapat diandalkan. Setelah Anda mengekstrak sertifikat, Anda dapat memasukkannya ke certtool -i < foo.cert , dan itu akan mencetak konten mentah bahkan dari nama yang tidak dikenalnya:

Subject Alternative Name (not critical):
    otherName OID: 1.3.6.1.4.1.311.20.2.3
    otherName DER: 0c1867726177697479404e554c4c524f5554452e45552e4f5247
    otherName ASCII: [email protected]

Cari OID 1.3.6.1.4.1.311.20.2.3; itu akan diikuti oleh konten mentah nama. Untungnya, mereka terdiri dari satu UTF8String, sehingga keluaran "otherName ASCII" mudah dipahami – cukup hapus dua byte pertama (ditampilkan sebagai titik di sini).

Cara yang lebih sederhana adalah dengan mencoba memasukkan login Windows Anda sendiri; UPN selalu dalam bentuk [email protected] .

(Agak menyedihkan bahwa dari semua alat yang saya coba, hampir tidak ada yang tahu cara menginterpretasikan jenis nama yang begitu sederhana dan umum digunakan – meskipun berpemilik.)


Linux
  1. Bagaimana saya bisa mendapatkan status keyboard di Linux?

  2. Bagaimana cara mendapatkan nama pengguna di Makefile?

  3. Bagaimana saya bisa menghapus pengguna di linux ketika sistem mengatakan sedang digunakan dalam suatu proses

  1. Cara Menghapus Pengguna di Linux Menggunakan Command Line

  2. Berapa Banyak Grup Unix yang Dapat Menjadi Anggota Pengguna?

  3. Bagaimana saya bisa membuat daftar atribut pengguna Active Directory dari komputer linux?

  1. Apakah Rsync ~/foo Target/foo Sama Dengan Rsync ~/foo/ Target/foo/?

  2. Cara Menggunakan Perintah id di Linux:5 Contoh Berguna

  3. Cara mengubah variabel PATH di Linux