Sidik jari hanya sekuat saluran yang memberi tahu Anda apa yang harus diharapkan. Jika nilai yang Anda bandingkan tiba lewat koneksi yang sama dengan yang sedang Anda uji, perbandingan itu tidak membuktikan apa pun selain bahwa pihak yang mengendalikan koneksi tersebut konsisten. Pemeriksaan harus berjalan dalam urutan tetap, dan langkah yang gagal semestinya menghentikan Anda, bukan mendorong ke langkah berikutnya. Berikut urutan yang saya pakai ketika klien VPN melaporkan bahwa sertifikat berubah.

Namai objeknya sebelum menamai nilainya

Putuskan apakah nilai yang diharapkan milik sertifikat daun server, milik CA penerbit, atau milik kunci publik di dalam daun. Itu tiga pemeriksaan berbeda, dan ketiganya gagal dengan cara berbeda. Sidik jari CA yang cocok tidak memakukan server, dan hash kunci publik sengaja bertahan melewati penerbitan ulang yang mempertahankan kunci yang sama.

Catat juga algoritmanya. SHA-256 adalah harapan normal sekarang, tetapi perkakas lama mencetak SHA-1 kecuali Anda meminta hal lain, dan nilai hex 40 karakter adalah tanda bahwa Anda akan membandingkan dua hal berbeda.

Ambil nilai yang diharapkan lewat saluran kedua

Saluran kedua haruslah saluran yang tidak bisa ditulisi oleh pihak yang Anda lindungi diri darinya. Sistem penyediaan yang sudah Anda autentikasi, catatan cetak di brankas, basis data konfigurasi, atau dokumen bertanda tangan yang diantar proses lain semuanya memenuhi syarat. Pesan obrolan dari rekan kerja, halaman dukungan yang dicapai lewat hasil pencarian, dan apa pun yang ditempel ke terminal tempat Anda melakukan debug tidak memenuhi syarat.

Mintalah nilai lengkap dan algoritmanya, jangan pernah prefiks. Titik dua dan huruf besar atau kecil tidak penting, tetapi pemotongan mengubah pemeriksaan 256 bit menjadi permainan menebak.

Jika tidak ada yang bisa menghasilkan nilai yang diharapkan dari sumber independen, hasil jujurnya adalah sertifikat ini tidak dapat diverifikasi hari ini. Mengatakan begitu lebih baik daripada memakukan apa yang baru saja ditampilkan klien, yang mengubah peringatan menjadi kebiasaan.

Ekstrak nilainya di sisi Anda

Untuk berkas sertifikat, perintahnya adalah openssl x509 -in server.crt -noout -fingerprint -sha256. Digest eksplisit itu penting: tanpanya, keluarannya bergantung pada versi OpenSSL Anda. Hasilnya adalah string hex yang dipisahkan titik dua, jadi buang titik duanya dan ubah kedua sisi menjadi huruf kecil sebelum membandingkan.

Untuk titik akhir yang berbicara TLS langsung, sambungkan dan salurkan sertifikatnya keluar: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. Ini bekerja untuk panel admin web atau pendengar TLS, bukan untuk OpenVPN, yang saluran kendalinya berada di dalam terowongan. Untuk OpenVPN, bacalah sertifikat dari profil di disk alih-alih mencoba menangkapnya dari soket.

Perbandingannya harus mekanis. Normalkan kedua nilai dengan tr -d ':' dan penyeragaman huruf, lalu bandingkan seluruh string. Melakukannya dengan mata adalah cara sebuah prefiks yang cocok menyembunyikan ketidakcocokan di byte terakhir. Jika string berbeda, perlakukan perbedaannya sebagai nyata sebelum Anda mencari penjelasan.

Kondisi berhenti

Berhentilah jika objeknya berbeda, karena sidik jari CA tidak bisa membersihkan sertifikat daun dan daun tidak bisa membersihkan CA. Berhentilah jika algoritmanya berbeda, karena nilai SHA-1 dibandingkan nilai SHA-256 tidak memberi tahu apa pun. Berhentilah jika sidik jarinya cocok tetapi sertifikatnya kedaluwarsa, dicabut, atau diterbitkan untuk nama lain; hash yang cocok bukan pemeriksaan keabsahan dan tidak memperbaiki rantai yang rusak. Berhentilah juga jika nomor serinya tidak cocok dengan nomor seri di catatan yang Anda jadikan acuan, karena itu cara termurah untuk melihat sertifikat yang diganti.

Berhentilah jika nilai baru tiba lewat saluran yang sedang Anda uji. Rotasi bisa mengubah sidik jari secara sah, tetapi nilai penggantinya tetap harus datang dari proses tepercaya, bukan dari dialog peringatan yang memicu pertanyaan.

Berhentilah jika perbaikan yang disarankan adalah menonaktifkan verifikasi nama host atau rantai. Sidik jari menambahkan batasan pada pemeriksaan normal; ia tidak menggantikannya kecuali penerapannya sengaja memilih model hanya-pin, dan pilihan itu membawa biaya operasionalnya sendiri.

Setelah perbandingan

Catat apa yang Anda bandingkan, dari mana nilai yang diharapkan berasal, dan kapan. Jika sertifikat diterbitkan ulang, perbarui ekspektasi yang tersimpan lewat saluran tepercaya yang sama dan catat nomor seri baru, karena nomor seri itulah yang membuat rotasi berikutnya dapat diaudit.

Lalu bersikap jelas soal batasannya. Sidik jari menegaskan bahwa sertifikat yang Anda pegang adalah yang dikatakan seseorang untuk Anda harapkan. Ia tidak mengatakan apa pun tentang host yang tidak disusupi, dan tidak mengatakan apa pun tentang apakah layanan mencatat atau membatasi apa yang dapat dijangkau sertifikat itu.

Artikel terkait