Pendekode sertifikat & PEM
Mendekode sertifikat X.509 dan permintaan penandatanganan sertifikat dari PEM — subjek, penerbit, masa berlaku, nama alternatif, ekstensi, dan sidik jari.
Tempel PEM di atas dan ia akan didekode di sini.
Apa yang dilakukan alat ini
Sebuah sertifikat tiba sebagai sebuah blok Base64 di antara dua baris tanda hubung, dan tak ada cara mengetahui apa pun tentangnya dengan melihat. Ini mendekodenya: kepada siapa dan oleh siapa ia diterbitkan, kapan ia kedaluwarsa, nama host mana yang dicakupnya, jenis kunci apa yang ditampungnya, dan setiap ekstensi yang dibawanya. Tempel seluruh rantai dan tiap sertifikat diperiksa terhadap yang berikutnya.
Ia berjalan sepenuhnya di browser Anda. Itu lebih penting di sini daripada bagi kebanyakan alat — alternatifnya biasanya menempelkan sebuah sertifikat produksi ke server orang lain, atau mengingat pemanggilan openssl, yang hampir tak ada yang melakukannya.
PEM hanyalah pembungkusnya
Tanda hubung dan Base64 adalah kemasan. Di dalamnya ada DER, sebuah pengodean biner dari sebuah struktur yang disebut ASN.1, dan label di antara tanda hubung mengatakan struktur mana yang diharapkan:
CERTIFICATE an issued X.509 certificate CERTIFICATE REQUEST a CSR: what you asked a CA for PUBLIC KEY a bare key with no identity attached PRIVATE KEY the secret half, refused here
Sertifikat yang sama juga bisa tiba sebagai DER mentah dalam sebuah berkas .cer atau .crt, tanpa tanda hubung dan tanpa Base64. Jika sebuah berkas terbuka sebagai derau biner ketimbang teks, itulah apa adanya; Base64 ia dulu, atau ekspor ia sebagai PEM.
Apa yang sebenarnya ada dalam sebuah sertifikat
Bidang inti sama dalam setiap sertifikat yang pernah diterbitkan:
- Subjek — tentang siapa sertifikat itu. Untuk sebuah situs web ini kini biasanya hanya sebuah nama umum, dan sering tak lebih.
- Penerbit — otoritas sertifikat yang menandatanganinya. Nama subjeknya muncul verbatim sebagai penerbit segala sesuatu yang ditandatanganinya, yang membuat pemeriksaan rantai mungkin.
- Masa berlaku — dua saat absolut, selalu dalam UTC. Alat ini menampilkan keduanya dan menghitung berapa lama tersisa di browser Anda, karena mesin build yang menghasilkan halaman ini tak tahu kapan Anda membacanya.
- Nomor seri — unik per penerbit, dan pengenal yang dipakai ketika sebuah sertifikat dicabut.
- Algoritme tanda tangan — yang dipakai penerbit menandatangani, misalnya SHA-256 dengan ECDSA.
- Kunci publik — jenisnya, dan ukurannya. Untuk RSA itu adalah panjang bit modulusnya; untuk EC itu adalah sebuah sifat dari kurva bernama, jadi P-256 selalu 256 bit.
Satu bidang yang orang harapkan dan tak lagi temukan: nama umum subjek bukan yang diperiksa browser. Ia telah diabaikan untuk pencocokan nama host selama bertahun-tahun. Yang penting adalah ekstensi nama alternatif subjek, di bawah.
Ekstensi yang memutuskan apakah ia berfungsi
Sebuah sertifikat bisa membawa sejumlah ekstensi berapa pun. Lima di antaranya menentukan apakah ia akan benar-benar diterima, dan alat ini mendekodenya selengkapnya:
- Subject Alternative Name — nama host, alamat IP, atau alamat surel yang untuknya sertifikat valid. Ini adalah bidang yang diperiksa browser, dan sebuah sertifikat yang SAN-nya tak mendaftar nama yang Anda ketik akan ditolak betapa pun benar segala sesuatu yang lain.
- Basic Constraints — apakah ini sebuah otoritas sertifikat, dan berapa banyak perantara boleh duduk di bawahnya. Sebuah sertifikat daun yang ditandai sebagai sebuah CA, atau sebaliknya, mematahkan rantai.
- Key Usage — untuk apa kunci boleh dipakai sama sekali: penandatanganan, penyandian kunci, penandatanganan sertifikat. Ditandai kritis hampir selalu, yang berarti perangkat lunak harus menolak sertifikat ketimbang mengabaikan sebuah penggunaan yang tak dipahaminya.
- Extended Key Usage — tujuannya: server TLS, klien TLS, penandatanganan kode, surel. Sebuah sertifikat tanpa autentikasi server TLS tak akan menyajikan sebuah situs web, dan ini adalah kejutan umum pada sertifikat yang diterbitkan untuk sesuatu yang lain.
- Subject dan Authority Key Identifier — hash pendek yang membiarkan perangkat lunak mencocokkan sebuah sertifikat ke penerbitnya cepat ketika beberapa berbagi sebuah nama.
Setiap ekstensi lain didaftar dengan namanya di tempat satu diketahui, OID-nya, dan apakah ia ditandai kritis. Tak ada yang diam-diam dibuang: sebuah ekstensi yang tak didekode alat ini tetap muncul, jadi Anda bisa melihat bahwa ia ada.
Rantai, dan apa arti "tertaut" di sini
Sebuah server hampir tak pernah mengirim satu sertifikat. Ia mengirim miliknya sendiri plus perantara yang dibutuhkan untuk menjangkau sebuah akar yang sudah dipercaya klien. Urutannya penting dan berkasnya biasanya disebut fullchain.pem:
block 1 leaf subject: example.com issuer: Example CA R3 block 2 intermediate subject: Example CA R3 issuer: Example Root block 3 root often omitted, since clients have it already
Setiap sertifikat menamai penerbitnya, dan sertifikat berikutnya di bawah seharusnya punya persis nama itu sebagai subjeknya. Alat ini membandingkan kedua nama itu bita demi bita dan mengatakan apakah mereka cocok. Itu adalah satu-satunya hubungan yang dapat diperiksa secara luring, dan ia menangkap dua kegagalan yang menjelaskan sebagian besar masalah rantai: sebuah perantara yang ditinggalkan, dan blok yang ditempel dalam urutan yang salah.
Kegagalan itu punya gejala khas. Browser desktop sering menutupi sebuah perantara yang hilang dengan mengambilnya sendiri, jadi situs tampak baik pada laptop Anda dan gagal pada sebuah ponsel, dalam sebuah aplikasi seluler, atau dari curl. Jika itu menjelaskan apa yang Anda debug, tempel seluruh rantai di sini dulu.
Apa yang tak diberitahukan alat ini kepada Anda
Ia tak memverifikasi tanda tangan, dan ia tak bisa. Memeriksa bahwa sebuah sertifikat benar-benar ditandatangani penerbitnya butuh kunci publik penerbit; memutuskan apakah penerbit itu harus dipercaya butuh sebuah penyimpanan kepercayaan. Sebuah berkas yang ditempel tak memasok satu pun. Ia juga tak bisa memeriksa pencabutan, yang butuh sebuah permintaan jaringan ke CA.
Jadi "rantai bersinambung" di sini berarti nama-namanya berbaris, bukan bahwa rantai valid. Sebuah rantai sertifikat palsu akan tertaut sempurna. Yang bagus dari pemeriksaan ini adalah menemukan kesalahan struktural dalam konfigurasi Anda sendiri, yang adalah yang benar-benar orang lihat ketika mereka menempel sebuah rantai ke sebuah pendekode.
Sidik jari, dan kunci privat
Sidik jari SHA-256 adalah sebuah hash dari seluruh sertifikat, dan ia adalah yang Anda bandingkan terhadap sebuah nilai yang seseorang kutipkan kepada Anda, atau terhadap sebuah pin. Perhatikan apa yang dikenalinya: sertifikatnya, bukan kunci di dalamnya. Memperbarui sebuah sertifikat untuk kunci yang sama menghasilkan sidik jari yang berbeda, yang menjadi alasan biasa sebuah pin patah saat pembaruan. Sidik jari SHA-1 ditampilkan pula karena alat dan konsol lama masih mencetaknya — untuk identifikasi saja; SHA-1 tak punya urusan menandatangani apa pun.
Kunci privat dikenali dan ditolak. Tak ada yang ditempel di sini meninggalkan browser Anda, jadi penolakan bukan tentang halaman ini: ia tentang menempelkan sebuah kunci privat ke sebuah formulir web adalah kebiasaan yang layak tak dibentuk, dan situs berikutnya yang meminta mungkin tak berjalan secara lokal. Jika Anda perlu memeriksa bahwa sebuah kunci dan sebuah sertifikat berpasangan, bandingkan kunci publik dari sertifikat terhadap yang diturunkan dari kunci, secara lokal.
Pertanyaan yang sering diajukan
- Apakah ini mengatakan apakah sertifikat saya tepercaya?
- Tidak. Kepercayaan bergantung pada sebuah penyimpanan kepercayaan dan sebuah pemeriksaan tanda tangan, tak satu pun mungkin dari sebuah berkas yang ditempel. Ia melaporkan apa yang dikatakan sertifikat tentang dirinya, dan apakah nama dalam sebuah rantai berbaris.
- Situs saya bekerja di Chrome pada laptop saya tetapi gagal di seluler. Apa yang sebaiknya saya lihat?
- Hampir selalu sebuah perantara yang hilang. Browser desktop sering mengambil sertifikat yang hilang sendiri dan menyembunyikan masalahnya; klien lain tidak. Tempel seluruh rantai Anda di sini — jika tautan antara dua sertifikat dilaporkan patah, itulah celahnya.
- Mengapa nama umum tak cocok dengan situs saya?
- Karena ia bukan yang diperiksa. Pencocokan nama host memakai ekstensi nama alternatif subjek, dan sudah bertahun-tahun. Lihat baris nama alternatif: jika nama host tak terdaftar di sana, sertifikat tak mencakupnya betapa pun nama umum mengatakan.
- Mengapa ia tak mau mendekode kunci privat saya?
- Secara sengaja. Tak ada yang Anda tempel meninggalkan browser Anda, tetapi menempelkan kunci privat ke halaman web adalah kebiasaan yang layak dihindari, dan alat ini menolak mengajarkannya. Sertifikat dan permintaan penandatanganan tak mengandung rahasia dan didekode secara normal.
- Apa perbedaan antara sebuah sertifikat dan sebuah CSR?
- Sebuah CSR adalah yang Anda kirim ke sebuah otoritas sertifikat: nama subjek Anda, kunci publik Anda, dan ekstensi yang Anda minta, ditandatangani oleh Anda. Sebuah sertifikat adalah yang kembali, dengan nama CA sendiri sebagai penerbit, sebuah jendela masa berlaku, dan sebuah nomor seri. Alat ini mendekode keduanya.
- Apakah sertifikat saya dikirim ke mana pun?
- Tidak. Penguraian, pendekodean, dan pengambilan sidik jari semuanya berjalan di browser Anda; tidak ada yang Anda tempel meninggalkan perangkat Anda.