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
Sertifikat tiba sebagai 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 peramban Anda. Itu lebih penting di sini daripada bagi kebanyakan alat — alternatifnya biasanya menempelkan 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, pengodean biner dari 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 berkas .cer atau .crt, tanpa tanda hubung dan tanpa Base64. Jika berkas terbuka sebagai derau biner ketimbang teks, itulah apa adanya; Base64-kan dulu, atau ekspor sebagai PEM.
Apa yang sebenarnya ada dalam sertifikat
Bidang inti sama dalam setiap sertifikat yang pernah diterbitkan:
- Subjek — tentang siapa sertifikat itu. Untuk situs web ini kini biasanya hanya 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 peramban Anda, karena mesin build yang menghasilkan halaman ini tak tahu kapan Anda membacanya.
- Nomor seri — unik per penerbit, dan pengenal yang dipakai ketika 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 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 peramban. 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
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 peramban, dan sertifikat yang SAN-nya tak mendaftar nama yang Anda ketik akan ditolak betapa pun benar segala sesuatu yang lain.
- Basic Constraints — apakah ini otoritas sertifikat, dan berapa banyak perantara boleh berada di bawahnya. Sertifikat daun yang ditandai sebagai 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 penggunaan yang tak dipahaminya.
- Extended Key Usage — tujuannya: server TLS, klien TLS, penandatanganan kode, surel. Sertifikat tanpa autentikasi server TLS tak akan menyajikan situs web, dan ini adalah kejutan umum pada sertifikat yang diterbitkan untuk sesuatu yang lain.
- Subject dan Authority Key Identifier — hash pendek yang memungkinkan perangkat lunak mencocokkan sertifikat dengan penerbitnya secara cepat ketika beberapa berbagi nama.
Setiap ekstensi lain didaftar dengan namanya bila namanya diketahui, OID-nya, dan apakah ia ditandai kritis. Tak ada yang diam-diam dibuang: ekstensi yang tak didekode alat ini tetap muncul, jadi Anda bisa melihat bahwa ia ada.
Rantai, dan apa arti "tertaut" di sini
Server hampir tak pernah mengirim satu sertifikat. Ia mengirim miliknya sendiri plus perantara yang dibutuhkan untuk menjangkau 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: perantara yang tak disertakan, dan blok yang ditempel dalam urutan yang salah.
Kegagalan itu punya gejala khas. Peramban desktop sering menutupi perantara yang hilang dengan mengambilnya sendiri, jadi situs tampak baik pada laptop Anda dan gagal pada ponsel, dalam 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 sertifikat benar-benar ditandatangani penerbitnya butuh kunci publik penerbit; memutuskan apakah penerbit itu harus dipercaya butuh penyimpanan kepercayaan. Berkas yang ditempel tak memasok satu pun. Ia juga tak bisa memeriksa pencabutan, yang butuh permintaan jaringan ke CA.
Jadi "rantai bersinambung" di sini berarti nama-namanya berbaris, bukan bahwa rantai valid. Rantai sertifikat palsu akan tertaut sempurna. Yang bagus dari pemeriksaan ini adalah menemukan kesalahan struktural dalam konfigurasi Anda sendiri, dan itulah yang benar-benar dilihat orang ketika mereka menempel rantai ke pendekode.
Sidik jari, dan kunci privat
Sidik jari SHA-256 adalah hash dari seluruh sertifikat, dan ia adalah yang Anda bandingkan terhadap nilai yang seseorang kutipkan kepada Anda, atau terhadap pin. Perhatikan apa yang diidentifikasinya: sertifikatnya, bukan kunci di dalamnya. Memperbarui sertifikat untuk kunci yang sama menghasilkan sidik jari yang berbeda, yang menjadi alasan biasa 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 peramban Anda, jadi penolakan bukan tentang halaman ini: menempelkan kunci privat ke formulir web adalah kebiasaan yang lebih baik tak dibentuk, dan situs berikutnya yang meminta mungkin tak berjalan secara lokal. Jika Anda perlu memeriksa bahwa kunci dan 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 penyimpanan kepercayaan dan pemeriksaan tanda tangan, tak satu pun mungkin dari berkas yang ditempel. Ia melaporkan apa yang dikatakan sertifikat tentang dirinya, dan apakah nama dalam rantai berbaris.
- Situs saya bekerja di Chrome pada laptop saya tetapi gagal di seluler. Apa yang sebaiknya saya lihat?
- Hampir selalu perantara yang hilang. Peramban 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 yang dikatakan nama umum.
- Mengapa ia tak mau mendekode kunci privat saya?
- Secara sengaja. Tak ada yang Anda tempel meninggalkan peramban 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 sertifikat dan CSR?
- CSR adalah yang Anda kirim ke otoritas sertifikat: nama subjek Anda, kunci publik Anda, dan ekstensi yang Anda minta, ditandatangani oleh Anda. Sertifikat adalah yang kembali, dengan nama CA sendiri sebagai penerbit, jendela masa berlaku, dan nomor seri. Alat ini mendekode keduanya.
- Apakah sertifikat saya dikirim ke mana pun?
- Tidak. Penguraian, pendekodean, dan pengambilan sidik jari semuanya berjalan di peramban Anda; tidak ada yang Anda tempel meninggalkan perangkat Anda.
Alat terkait
- Pembuat HMAC
Tandatangani pesan dengan kunci, atau verifikasi tanda tangan webhook.
- Debugger kode TOTP / 2FA
Hasilkan dan debug kode 2FA, dengan derivasi lengkap.
- Bcrypt
Buat hash bcrypt, atau periksa kata sandi terhadap hash yang ada.
- Pendekode / pemverifikasi JWT
Dekode dan verifikasi JSON Web Token — tanda tangan dan klaim.