Parser Sertifikat
Sertifikat X.509 adalah format standar untuk sertifikat kunci publik yang digunakan dalam TLS/SSL. Alat ini mengurai sertifikat berenkode PEM untuk menampilkan subjek, penerbit, periode validitas, detail kunci publik, dan ekstensi. Penting untuk debugging masalah koneksi HTTPS.
Spesifikasi
Kasus Penggunaan Umum
- Debug error koneksi SSL/TLS ("certificate has expired")
- Memverifikasi sertifikat mencakup nama domain yang benar
- Memeriksa tanggal kedaluwarsa sertifikat untuk perencanaan perpanjangan
- Memeriksa sertifikat intermediate dan root dalam rantai
- Memverifikasi atribut sertifikat memenuhi persyaratan kepatuhan
Fitur
- Mengurai sertifikat berenkode PEM (-----BEGIN CERTIFICATE-----)
- Menampilkan nama terbedakan subjek dan penerbit
- Menunjukkan periode validitas (Not Before / Not After)
- Mengekstrak algoritma dan ukuran kunci publik
- Menampilkan Subject Alternative Names (SAN)
- Menunjukkan ekstensi sertifikat (Key Usage, Extended Key Usage, Basic Constraints)
- Tampilan Authority/Subject Key Identifier
- URL CRL Distribution Points dan Authority Information Access
Contoh
Sertifikat Self-Signed
Coba →Sertifikat X.509 untuk example.com dengan Subject Alternative Names.
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIUb7VAvx3CADEDexgoNd41E9Y5tZowDQYJKoZIhvcNAQEL
BQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
DVNhbiBGcmFuY2lzY28xFDASBgNVBAoMC0V4YW1wbGUgSW5jMRQwEgYDVQQLDAtF
bmdpbmVlcmluZzEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjYwMTI1MDQ0ODMw
WhcNMjcwMTI1MDQ0ODMwWjB8MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZv
cm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEUMBIGA1UECgwLRXhhbXBsZSBJ
bmMxFDASBgNVBAsMC0VuZ2luZWVyaW5nMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKN/rhprC1rfrwKpj9ZqwRR
4c51daZRMlij1NbmUJn7KiZTghxu1OtOEodGmpcF3xuWxiBYTOKvQZ+qPpED6IAG
IYtANPetAkRbsf/xdZZZ/BRR3jQQ2AVDfyuBSYjYEV4JMVG47JCj7oewgNb0dejv
HI18aBWzIGE6v9Zv5FDt+d3GjJignI8elrGzrnJg85qsd743xSEPALqf1NsyhjtY
Th91DazAOoPzA/DMXzoXUhAf9C5uWQlSdn6JDzs8/ld0c+LZH9ohvC/IN/PfdkYg
NYR2AJutUdxbOPPmcFm46o/WpquV2H0mIMuvdzI+k/tk6wVV2jwu2ysQLwweqecC
AwEAAaOBjjCBizAdBgNVHQ4EFgQU9Th/a8eJZ9DHh5uUGyf+iTSNF14wHwYDVR0j
BBgwFoAU9Th/a8eJZ9DHh5uUGyf+iTSNF14wDwYDVR0TAQH/BAUwAwEB/zA4BgNV
HREEMTAvggtleGFtcGxlLmNvbYIPd3d3LmV4YW1wbGUuY29tgg9hcGkuZXhhbXBs
ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAE1rGDKmhMBkcdwZva/9CouLeLOIHBiI
uPH1LV6Pbl2KJ11w1L36SstF17+M3Sn0SJxstCePJWlfLlx6r5JZSyNAQghmgep1
/YWrsDtC3bjs4stOz1FWUgUDs+b7pf+h93lLTShX8mue2rjIXbYJPJx9XsCmyx1R
zLuYSoOSQ/0aR7NSzjqgoHEUNI/2mGTRJ6ngC0vx88ppn+tuk8PyAXt8kp8hPx3I
6lmmyzfuwt0JZIawW2p1nkMlGt2IBIxBBY7vjAHCTDRa69YP08QeImDM13FelUVh
tXPOCJaWXZQmppgKNtmpedswRRtOyl83cqzkz4rZRpjnpPqIEWNQ9bs=
-----END CERTIFICATE-----Kunci Privat
Coba →Kunci privat RSA yang sesuai dalam format PKCS#8.
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyjf64aawta368
CqY/WasEUeHOdXWmUTJYo9TW5lCZ+yomU4IcbtTrThKHRpqXBd8blsYgWEzir0Gf
qj6RA+iABiGLQDT3rQJEW7H/8XWWWfwUUd40ENgFQ38rgUmI2BFeCTFRuOyQo+6H
sIDW9HXo7xyNfGgVsyBhOr/Wb+RQ7fndxoyYoJyPHpaxs65yYPOarHe+N8UhDwC6
n9TbMoY7WE4fdQ2swDqD8wPwzF86F1IQH/QublkJUnZ+iQ87PP5XdHPi2R/aIbwv
yDfz33ZGIDWEdgCbrVHcWzjz5nBZuOqP1qarldh9JiDLr3cyPpP7ZOsFVdo8Ltsr
EC8MHqnnAgMBAAECggEAANyt1b1JqlASJPcQMmiABBDsVcJvacW+lOFfNHv/XtIk
AMD3QdfiVnh8BZ2SC+Sbw4nvNVZeMkH4v4j84FcnSjO9YB5Ub+9GSyCXzWdT0zQA
AyeAbe2FSkRqWsI3CETl+iqlMekCPpIfPRYQqSw1w+tTm5APZWHSzpiQA7ydwSsP
sJ1QBq64eXSXFhpyLG0LE4ATeyH9dxj9n9NocL0QOqT+Tl5Dcjlxc7fYmoHStC0q
9Xb5h1Po3kmESAELdUobBbJvJFVK98PMB6osUR4VM4snQJOJZ+4Df7bxU311OgLB
Am/mQjsnyZqBWjDQaUj/BGnapJxqB+a102Ki3XMX4QKBgQDcmUc0c+zfRfnic22Q
ytJ3Y29N1C52GESFulL+cYfwwfVK/VXWT1b/eECABVWZvzP22wyEnkodkYWSoN86
GK2PvH8ii9EpkkCtRabFqmbfqPysTKawu9/BgrVAvEvRQjHHAUZnytwtw+IcL6Nz
EjQ4UrFK+3/rycT05I/ToHRgGQKBgQDPNXI0OSJ1nl7YQOry4C4ekT/uCJAbV7bN
MU49iSMqldlXy+VvSKAwErzvaAtQUolvu3DPw2hcpMxuH+hoHweTA0lu0VbZRKvS
1EhMWQGN2qrSQYcnhvKY/BUbd7KjZ858PeOBcTgyCfBkfdBNgughjsCv2BxKGxQI
Li2gSWSZ/wKBgF0M2pgpffUAE1ON1N2KcBSkAMMXiTGPMvgli/R/9xN6/PjQu3BW
rx+7nZlipqTfng+2fiVCj4jBZVJgQUjEOBG1NPthdqzOYDG2e45NPm+BXHNhMb7C
wLNjawkPY/u0rEKBKy2EyDMVuT6iaZOUTiqj1t0GEQNobIfQEUr3F5+hAoGAZuD3
afxwIovWNXLN9HbgDyc44Zt4yUqcpXZ0jVL4ld0+wzumF8GsXxH+orM64s+IE2Sy
V0WDHHRqV8cZ4hB99z0riY0AnPFeilgB6X5Lqj3GkIweab6z1sdaR3//vuf8em1T
9uHa7+VFaO+aq9FyJa819ljLevPE12buGmY2P8sCgYEAoSk3KwiEO9zvxuuwqdBh
Qv/dvWPgh/KttWcoL6Axt1z4gG+vdidn8xIdVGy6xnQOYpm+ANqRpWO82Hws5ITy
8uDn/S2kjQnyh8Cz7jJLBiJUxz/ZWfUz56cQq3Bej46oJN6UKkhJ9ogAjUJAYjV1
7JIWxv6OC7Cg6xfHCGRa7F0=
-----END PRIVATE KEY-----Tips
- Ekspor sertifikat dari browser: klik gembok > Sertifikat > Detail > Ekspor.
- Dapatkan sertifikat situs dengan: openssl s_client -connect example.com:443
- SAN (Subject Alternative Names) mencantumkan semua nama domain yang valid.
- Sertifikat root ditandatangani sendiri (penerbit = subjek).
- Periksa rantai sertifikat dengan: openssl verify -CAfile ca.pem cert.pem
Pemahaman Parser Sertifikat
Sertifikat X.509 adalah fondasi kepercayaan di internet, memungkinkan enkripsi TLS/SSL untuk koneksi HTTPS, penandatanganan kode, keamanan email (S/MIME), dan autentikasi VPN. Sertifikat mengikat kunci publik ke identitas (nama domain, organisasi, atau individu), dan Certificate Authority (CA) menjamin pengikatan ini dengan menandatangani sertifikat secara digital.
Sertifikat biasanya disimpan dalam format PEM — data DER yang dienkode Base64 yang diapit antara penanda -----BEGIN CERTIFICATE----- dan -----END CERTIFICATE-----. Sertifikat berisi subjek (siapa yang diidentifikasi sertifikat), penerbit (siapa yang menandatanganinya), periode validitas (tanggal Not Before dan Not After), kunci publik subjek, dan ekstensi yang mengontrol penggunaan. Ekstensi Subject Alternative Name (SAN) mencantumkan semua nama domain yang dicakup sertifikat.
Rantai sertifikat membangun kepercayaan dengan menghubungkan sertifikat entitas akhir ke CA root terpercaya melalui satu atau lebih CA intermediate. Ketika browser terhubung ke situs web, ia memverifikasi rantai: sertifikat server ditandatangani oleh CA intermediate, yang ditandatangani oleh CA root yang dipercaya browser. Rantai yang rusak — intermediate yang hilang atau root yang tidak dikenal — menyebabkan error "Koneksi Anda tidak pribadi" yang sering kita jumpai.
Manajemen sertifikat adalah sumber umum gangguan layanan. Sertifikat yang kedaluwarsa menyebabkan gangguan layanan langsung. Nama domain yang tidak cocok memicu peringatan browser. Sertifikat intermediate yang hilang berfungsi di beberapa browser (yang mungkin meng-cache atau mengambilnya) tetapi gagal di browser lain dan di klien API. Memantau kedaluwarsa sertifikat dan mengotomatiskan perpanjangan dengan alat seperti Let's Encrypt dan certbot sangat penting untuk operasi yang andal.
Untuk memeriksa kapan sertifikat kedaluwarsa, tempelkan konten PEM ke alat ini dan lihat tanggal Not After. Dari baris perintah, jalankan openssl x509 -enddate -noout -in cert.pem untuk file lokal, atau openssl s_client -connect example.com:443 yang di-pipe ke openssl x509 -noout -enddate untuk server jarak jauh. Pemantauan otomatis melalui certbot, cert-manager, atau layanan pemantauan khusus dapat memberi peringatan jauh sebelum kedaluwarsa untuk mencegah gangguan.
Sertifikat root ditandatangani sendiri (penerbit sama dengan subjek) dan sudah terpasang di browser dan sistem operasi sebagai jangkar kepercayaan. Sertifikat intermediate ditandatangani oleh CA root dan digunakan untuk menandatangani sertifikat entitas akhir. Rantai kepercayaan ini melindungi kunci root — jika intermediate dikompromikan, hanya intermediate tersebut yang dicabut bukan root. Server harus mengirim rantai lengkap (entitas akhir plus semua intermediate) tetapi tidak boleh menyertakan sertifikat root itu sendiri.
Subject Alternative Names (SAN) mencantumkan semua nama domain dan alamat IP yang valid untuk sertifikat. Satu sertifikat dapat melindungi beberapa domain seperti example.com, www.example.com, dan api.example.com menggunakan SAN. Browser modern menggunakan SAN alih-alih field Common Name (CN) untuk validasi domain. Sertifikat wildcard (*.example.com) mencakup satu level subdomain tetapi bukan domain apex itu sendiri.
Sertifikat yang berfungsi di browser tetapi gagal di klien API adalah masalah umum yang disebabkan oleh rantai sertifikat yang tidak lengkap. Browser lebih toleran — beberapa mengambil intermediate yang hilang secara otomatis melalui pengambilan AIA (Authority Information Access) atau menggunakan intermediate yang di-cache sebelumnya. Klien API seperti curl, Node.js, dan library requests Python biasanya membutuhkan rantai lengkap yang dikirim oleh server. Pastikan server Anda dikonfigurasi untuk mengirim sertifikat entitas akhir plus semua sertifikat intermediate, dan uji dengan curl -v atau openssl s_client untuk memverifikasi rantai lengkap.