Nama berkas ca.crt sama, sertifikat berbeda: apa yang dibandingkan
Dua profil dapat membawa ca.crt dengan isi berbeda. Ambil sidik jari apa yang dimuat proses, lalu periksa apakah itu jangkar kepercayaan yang Anda maksud.
Dua profil sama-sama membawa berkas bernama ca.crt, satu terowongan naik dan yang lain gagal dengan kesalahan rantai. Membuka kedua berkas berdampingan jarang menyelesaikannya, dan mematikan verifikasi menyelesaikannya ke arah yang salah. Pertanyaan yang sebenarnya diajukan kesalahan itu lebih sempit: sertifikat mana yang dimuat setiap proses sebagai jangkar kepercayaannya, dan apakah keduanya objek yang sama? Jawab itu lebih dulu dan sisa diagnosis mendapat arah. Nama berkas adalah label kemasan, dan jalur yang ditulis di profil juga tidak otoritatif, jadi semuanya bergantung pada apa yang benar-benar dibaca proses.
Temukan sertifikat yang benar-benar dimuat klien
OpenVPN menerima otoritas dalam dua bentuk, dan bentuknya menentukan bita mana yang penting. Profil dapat menunjuk berkas eksternal dengan ca, atau menyematkan sertifikat di dalam blok <ca> pada profil itu sendiri. Bila keduanya ada, blok tersemat yang menang dan berkas di samping profil tidak pernah dibuka.
Baca profil yang gagal dan cari tahu bentuk mana yang dipakainya sebelum membandingkan apa pun. Salinan yang diambil dari direktori tetangga, atau dari paket asal profil lain, tidak memberi tahu apa pun tentang apa yang dipercaya proses ini. Hal yang sama berlaku untuk jalur dalam konfigurasi: jalur itu diselesaikan relatif terhadap tempat klien dijalankan, yang tidak selalu direktori yang Anda lihat. Baca profilnya, bukan foldernya.
Sertifikat diidentifikasi oleh isinya: kunci publik, subjek dan penerbit, jendela masa berlaku, dan tanda tangan atas semuanya. Dua berkas dengan bita identik adalah sertifikat yang sama apa pun namanya, dan dua berkas dengan nama sama bisa merupakan otoritas yang tidak berhubungan. Nama adalah label kemasan, bukan identitas.
Ambil sidik jari kedua salinan dengan openssl
Sidik jari adalah hash atas pengodean DER sertifikat, bentuk yang dicakup tanda tangan, jadi akhir baris dan teks tajuk tidak dapat memengaruhinya. Hitung untuk setiap berkas dan Anda memiliki dua untai heksadesimal yang dipisahkan titik dua yang entah cocok atau tidak. Tidak ada hal lain dalam sertifikat yang perlu dibaca untuk menjawab pertanyaan perbandingan.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
Mengarahkan openssl ke profil itu sendiri memang menggiurkan, tetapi ia membaca blok sertifikat yang muncul pertama dalam berkas, dan profil biasanya membawa <cert> sebelum <ca>. Ekstrak blok otoritas, lalu ambil sidik jari berkas hasil ekstraksi, karena itulah salinan yang benar-benar akan dipakai klien.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Sidik jari identik berarti materi kepercayaan sama dan kesalahan rantai punya penyebab lain, yang merupakan penyelidikan berbeda. Sidik jari berbeda berarti sertifikat berbeda, dan di situlah bagian berikutnya dimulai.
Baca ketidakcocokan sebelum menganggap serangan
Sidik jari berbeda berarti sertifikat berbeda dan tidak lebih. Penerbitan ulang, rotasi, otoritas yang berganti nama, atau bundel usang semuanya menghasilkan berkas berbeda dengan riwayat yang sepenuhnya sah. Mana yang termasuk penerapan adalah pertanyaan bagi operator atau catatan penerapan, bukan bagi waktu modifikasi berkas. Arsip menyalin stempel waktu, jadi berkas yang lebih baru tidak otomatis jangkar yang benar.
Akar yang menandatangani dirinya sendiri itu normal, jadi menemukannya bukan bukti masalah. Tugas pemverifikasi adalah membangun jalur dari sertifikat server ke jangkar yang diberikan kepadanya, dan kesalahan rantai biasanya berarti jalur itu tidak dapat diselesaikan.
Periksa apakah jangkar profil yang gagal adalah otoritas yang masih menerbitkan penerapan. Jika sidik jari tidak cocok dengan apa pun di catatan penerapan, profil itu sekadar usang, dan tidak ada penyetelan sisi klien yang akan memperbaikinya.
Perbaiki kepercayaan tanpa mematikan verifikasi
Perbaikan jangka pendek adalah mematikan verifikasi atau menambahkan setiap sertifikat dalam rantai sebagai jangkar. Keduanya membuat pesan hilang, dan keduanya mengubah server mana yang akan diterima klien sejak saat itu. Nyalakan kembali verifikasi, pasang jangkar yang dimaksud, dan uji lagi.
Jika rantai sekarang terbangun tetapi kesalahan lain muncul, itu kemajuan: verifikasi nama, tanggal masa berlaku, dan pencabutan adalah pemeriksaan terpisah dengan pesan terpisah. Simpan pasangan sidik jari dan teks kesalahan asli bersama di tiket, agar orang berikutnya melihat jangkar mana yang dimuat dan mana yang diharapkan. Sepasang sidik jari cukup kecil untuk ditempel di catatan serah terima, dan kejadian berikutnya lalu memakan lima menit alih-alih satu sore.
Dapatkan otoritas yang benar melalui kanal terautentikasi yang sama yang mengirimkan profil. Menarik sertifikat dari server karena subjeknya tampak familier adalah tindakan berbeda, dan diam-diam memperlebar apa yang akan dipercaya klien.