← Semua materi
TroubleshootingSecurityMenengah

Troubleshooting TLS certificate dengan OpenSSL: hostname, expiry, dan certificate chain

Periksa sertifikat yang benar-benar dipresentasikan server, masa berlaku, SAN, issuer, dan chain menggunakan OpenSSL.

Tujuan latihan

Mengumpulkan bukti TLS sebelum mengubah certificate, DNS, atau konfigurasi web server.

Persiapan

OpenSSL tersedia di terminal dan hostname HTTPS yang boleh Anda uji. Jangan menggunakan opsi yang menonaktifkan verifikasi sebagai solusi permanen.

TLS client
Server certificate
Trust chain

Masalah

Browser menampilkan certificate warning atau aplikasi gagal melakukan TLS handshake. Penyebabnya dapat berupa hostname mismatch, sertifikat kedaluwarsa, chain tidak lengkap, atau server mempresentasikan sertifikat yang berbeda dari yang Anda harapkan.

Persiapan

Catat hostname persis yang gagal. Pada server dengan banyak virtual host, SNI penting karena sertifikat yang diterima dapat bergantung pada hostname yang dikirim client.

1. Lihat handshake dan chain

-servername mengirim SNI. Redirect stdin dari /dev/null agar koneksi selesai tanpa menunggu input interaktif.

openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null

2. Ringkas sertifikat leaf

Pipe sertifikat ke openssl x509 untuk menampilkan subject, issuer, masa berlaku, dan Subject Alternative Name.

openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates -ext subjectAltName

3. Periksa hostname yang diminta

Pastikan hostname terdapat pada Subject Alternative Name. Jangan hanya mengandalkan Common Name pada sertifikat modern.

4. Baca verify result

Di bagian akhir s_client, perhatikan Verify return code. Nilai non-zero menunjukkan OpenSSL tidak dapat membangun atau memverifikasi chain dengan trust store yang digunakan pada mesin pengujian.

Verifikasi

Uji dari jaringan atau client pembanding bila masalah hanya terjadi pada satu perangkat. Cocokkan juga DNS hostname dengan server yang seharusnya melayani TLS agar Anda tidak memperbaiki sertifikat pada origin yang salah.

5. Periksa chain yang benar-benar dikirim server

showcerts menampilkan sertifikat yang dipresentasikan peer, tetapi urutan dan kelengkapan chain tetap perlu ditafsirkan. Leaf certificate biasanya diikuti intermediate; root umumnya tidak perlu dikirim server. Chain yang tidak lengkap dapat bekerja pada satu client tetapi gagal pada client lain yang tidak memiliki intermediate di cache.

6. Uji verifikasi hostname secara eksplisit

Untuk diagnosis yang lebih ketat, gunakan verifikasi hostname pada OpenSSL versi yang mendukungnya. Ini membantu membedakan 'chain dipercaya' dari 'sertifikat cocok untuk hostname yang diminta'.

openssl s_client -connect example.com:443 -servername example.com -verify_hostname example.com </dev/null

Kesalahan umum

Jangan hanya melihat tanggal expiry. Sertifikat yang masih berlaku tetap dapat gagal karena SAN tidak cocok, chain tidak lengkap, trust store berbeda, SNI salah, atau waktu sistem client tidak benar. Hindari -verify_return_error atau opsi bypass tanpa memahami tujuan diagnosis.

Checklist verifikasi

Catat hostname, SNI, subject, SAN, issuer, notBefore/notAfter, chain yang dikirim, dan Verify return code. Bandingkan dengan DNS hostname agar Anda yakin sedang memeriksa endpoint yang memang melayani domain tersebut.

Pelajaran

TLS troubleshooting sebaiknya dimulai dari sertifikat yang benar-benar diterima client. Bukti handshake, SAN, expiry, issuer, dan verify result lebih berguna daripada asumsi berdasarkan file sertifikat yang tersimpan di server.

Referensi resmi

OpenSSL — s_client ↗OpenSSL — x509 ↗
Lihat semua materi →