remote-cert-tls server: apa yang diperiksanya dalam profil OpenVPN
Direktif ini memeriksa peran yang dikodekan dalam sertifikat lawan, bukan namanya. Bandingkan peran, jangkar kepercayaan, dan pemeriksaan nama host sebelum menonaktifkan apa pun.
Tiga pertanyaan berbeda dijawab oleh tiga bagian berbeda dari profil OpenVPN, dan menggabungkannya adalah cara orang akhirnya mematikan pemeriksaan yang tadinya berfungsi. Apakah sertifikat lawan ditandatangani oleh otoritas yang saya percaya? Apakah sertifikat itu menyatakan peran server TLS? Apakah itu server tertentu yang ingin saya capai? remote-cert-tls server hanya menjawab pertanyaan tengah, dan melakukannya dengan membaca ekstensi di dalam sertifikat.
Tiga pemeriksaan yang mudah digabungkan di kepala
Jangkar kepercayaan berada dalam direktif ca. Pemeriksaan peran milik remote-cert-tls. Pemeriksaan identitas milik verify-x509-name, ketika profil menggunakannya, atau milik pemeriksaan nama apa pun yang ditambahkan penerapan.
Ketiganya mencakup kegagalan yang berbeda:
| Question | Directive | Failure it catches |
|---|---|---|
| Who signed this? | ca | Certificate from an unrelated authority |
| Is this a server? | remote-cert-tls | Client certificate presented by a peer |
| Is this my server? | verify-x509-name | Another valid server from the same CA |
Sebuah profil dapat memiliki ketiganya dan tetap lemah jika CA dibagikan terlalu luas, yang merupakan pertanyaan manajemen kunci, bukan pertanyaan direktif.
Apa yang dibaca pemeriksaan peran
Direktif ini adalah makro. Ia berkembang menjadi persyaratan penggunaan kunci dan persyaratan penggunaan kunci yang diperluas yang menyebutkan peran server web TLS, jadi sertifikat lawan harus benar-benar menyatakan tujuan itu. Sertifikat yang diterbitkan untuk autentikasi klien tidak memenuhinya, bahkan ketika otoritas yang sama menandatangani keduanya.
Itu penting karena CA bersama umum di penerapan kecil. Satu otoritas menandatangani setiap klien dan server, dan tanpa pemeriksaan peran, salah satu sertifikat itu bisa menyelesaikan sisi server dari jabat tangan. Pemeriksaan itu tidak membuat skenario tersebut mustahil, tetapi menghapus versi sepele darinya.
Direktif ini asimetris secara desain: klien membawa remote-cert-tls server, dan server membawa remote-cert-tls client. Tukar keduanya dan setiap koneksi gagal dengan galat peran yang tampak seperti sertifikat rusak.
Profil lama kadang menggunakan ns-cert-type untuk tujuan yang sama. Halaman manual saat ini menganggap opsi itu sudah digantikan, jadi profil yang masih bergantung padanya layak dimigrasikan daripada di-debug.
Mengapa menonaktifkannya terasa seperti perbaikan
Ketika pemeriksaan peran gagal, koneksi berhenti dengan galat verifikasi dan langkah yang jelas adalah menghapus baris itu. Koneksi lalu muncul, yang terasa seperti kemajuan dan sebenarnya adalah mode kegagalan yang hendak dicegah oleh direktif. Sekarang Anda menerima lawan yang sertifikatnya tidak pernah dimaksudkan untuk peran itu.
Baca galatnya saja. Galat itu menyebut pemeriksaan yang gagal, dan sertifikat di sisi lain dapat diperiksa untuk melihat ekstensi apa yang sebenarnya dibawanya. Dua menit membaca menentukan apakah kesalahannya pada penerbitan atau konfigurasi. Menebak memakan waktu satu sore dan biasanya berakhir dengan profil yang melemah. Sertifikat server yang diperbarui tetapi kehilangan penggunaan kunci yang diperluas adalah kesalahan nyata dalam pembaruan, bukan alasan melonggarkan klien.
Pemeriksaan nama adalah direktif terpisah
Memenuhi pemeriksaan peran berarti lawan adalah suatu server yang ditandatangani oleh otoritas Anda. Itu tidak mengatakan yang mana, yang penting ketika CA yang sama menerbitkan sertifikat untuk beberapa gateway dan salah satunya disusupi atau dialihfungsikan.
verify-x509-name membandingkan subjek sertifikat dengan nilai yang Anda konfigurasikan, dengan mode pencocokan untuk subjek persis, prefiks, atau satu bidang. Gunakan bidang yang benar-benar mengidentifikasi gateway, dan perkirakan akan memperbaruinya secara sengaja ketika nama berubah.
Tidak ada dari kedua direktif ini yang menggantikan penanganan kunci yang baik. Jika berkas kunci klien disalin ke sana kemari bersama profil, identitas lawan hanya sekuat daftar distribusi.
Periksa sertifikat sebelum Anda menyunting profil
Baca sertifikat lawan dan log klien, dalam urutan itu. Sertifikat memberi tahu peran apa yang dinyatakannya; log memberi tahu pemeriksaan mana yang menolaknya.
Perintah ini mencetak ekstensi penggunaan dan baris verifikasi dari koneksi verbose:
openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verifyJika ekstensi menunjukkan peran server dan log masih melaporkan kegagalan peran, profil kemungkinan menunjuk ke berkas sertifikat yang salah, bukan ke sertifikat yang buruk. Jika ekstensi hanya menunjukkan autentikasi klien, berhentilah melihat klien dan perbaiki penerbitannya. Bagaimanapun, pulihkan pemeriksaan sebelum Anda menyebut koneksi sehat, karena jabat tangan yang berhasil setelah verifikasi dihapus membuktikan lebih sedikit daripada galat yang digantikannya.