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