Dua Sertifikat OpenVPN, Satu Nama CCD: Apa yang Salah
Nomor seri hanya unik di dalam penerbitnya, sedangkan OpenVPN memilih berkas CCD berdasarkan nama. Pesan nama efektif itu saat pendaftaran dan kendalikan pembaruannya.
Dua sertifikat klien dengan nomor seri berbeda, kunci berbeda, dan bahkan subjek lengkap berbeda tetap dapat bermuara pada satu berkas kebijakan, karena server tidak melihat satu pun dari itu. Server membaca sebuah nama dari sertifikat dan membuka berkas konfigurasi klien yang cocok. Jika kedua sertifikat membawa nama yang sama, sertifikat kedua mewarisi kebijakan yang pertama pada saat ia terhubung.
Tabrakan ini tercipta saat pendaftaran dan baru ditemukan saat koneksi, biasanya ketika sebuah perangkat menerima alamat atau kumpulan rute milik mesin lain. Mencegahnya berarti menyepakati bidang mana yang dipetakan server, lalu memesan nilai itu sebelum apa pun ditandatangani.
Perkakas sertifikat Anda tidak akan memperingatkan Anda, karena keunikan di dalam X.509 dan keunikan nama kebijakan OpenVPN adalah persyaratan berbeda yang ditegakkan oleh sistem berbeda.
Server mencari nama, bukan sidik jari
Dengan pemetaan berbasis sertifikat yang lazim, server mengambil nama umum dari sertifikat yang disajikan dan mencari berkas dengan nama itu di direktori konfigurasi kliennya. Berkas itu dapat mematok alamat statis, mendorong rute, atau menerapkan tanda firewall per klien. Pencarian adalah pencocokan string terhadap nama berkas, jadi besar-kecil huruf, spasi, dan tanda baca semuanya penting.
Sebagian penerapan sengaja menukar pemetaan agar nama pengguna yang terautentikasi menggantikan nama umum, dan saat itu nama pengguna yang harus unik. Bagaimanapun, nilai yang memilih kebijakan adalah nilai yang Anda pesan. Putuskan yang mana sebelum menerbitkan apa pun; menebak setelah tabrakan lebih mahal daripada bertanya.
Ketika dua otoritas cocok pada nama yang sama
Organisasi yang menerima sertifikat dari lebih dari satu otoritas penerbit menjalankan dua proses pendaftaran independen yang menulis ke satu ruang nama. Aturan keunikan milik tiap otoritas berlaku di dalam dirinya sendiri, sehingga keduanya dapat menerbitkan secara sah untuk nama umum yang sama tanpa ada yang menyadari ada yang salah.
Nomor seri tidak membantu. X.509 mewajibkan nomor seri unik dalam lingkup penerbitnya, yang merupakan sifat pembukuan otoritas itu, bukan identitas perangkat global. Pemeriksaan subjek juga berbeda dari pemeriksaan nama umum: dua sertifikat dapat berbagi CN tetapi berbeda unit organisasi, dan karena itu membawa subjek yang berbeda. Semua sifat itu bisa terpenuhi sementara server tetap memetakan kedua sertifikat ke satu nama berkas.
Dokumentasi OpenSSL CA membahas pengaturan unique_subject yang mengatur pendapat basis datanya sendiri, dan titik awal yang jujur adalah membaca konfigurasi penerbitan Anda alih-alih menganggap suatu bawaan EasyRSA atau OpenSSL tertentu berlaku.
Pesan nama efektif sebelum menandatangani
Pelihara daftar yang memetakan perangkat ke catatan yang disetujui dan dari sana ke nama berkas kebijakan yang tepat, agar sebuah nama dialokasikan sekali dan tetap dialokasikan. Pemesanan harus atomik, yang dalam praktik berarti batasan basis data atau kunci di sekitar langkah alokasikan-lalu-tandatangani, bukan lembar kerja yang diedit dua orang.
Lalu jadikan pemeriksaan bagian dari penerbitan: tolak menandatangani ketika nama yang diminta sudah ada, dan sertakan setiap otoritas yang dipercaya server dalam pemeriksaan itu, karena nama yang dipesan otoritas lain sama-sama terpakai. Permintaan ditolak dengan alasan jelas lebih murah daripada tiket tentang perangkat yang terus menerima alamat statis orang lain.
Pembaruan sengaja menggunakan ulang nama
Penerbitan ulang untuk perangkat yang sudah ada seharusnya menghasilkan nomor seri baru di bawah nama kebijakan yang sama, dan itu penggunaan ulang yang sah, bukan tabrakan. Yang harus diputuskan lebih dulu adalah tumpang tindihnya: apakah sertifikat lama dan baru boleh berlaku bersamaan, dan bagaimana kredensial lama dipensiunkan.
Jangan menjangkau duplicate-cn untuk menyelesaikan ini. Opsi server itu mengatur koneksi bersamaan yang menyajikan nama sama; ia tidak mengunci pendaftaran, dan mengaktifkannya tidak membuat satu alamat statis bersama aman untuk dua mesin sekaligus. Pencabutan biasanya mengidentifikasi sertifikat lewat penerbit dan nomor seri, jadi memensiunkan kredensial lama tidak perlu membatalkan penggantinya asalkan server menerima dan menegakkan data pencabutan yang benar.
Pastikan pemetaan dengan perkakas di mesin
Sebelum menyerahkan kredensial baru kepada sebuah perangkat, bacalah nama dari sertifikat seperti yang akan dilakukan server, lalu bandingkan dengan berkas kebijakan yang Anda harapkan terpilih.
openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf
Perintah pertama mencetak bidang subjek secara terpisah, yang membuat unit organisasi nyasar atau spasi ganda langsung terlihat. Perintah kedua memastikan berkas kebijakan ada tepat dengan nama itu, dan yang ketiga menunjukkan apakah server dikonfigurasi untuk mengizinkan beberapa sesi pada satu nama. Jalankan ketiganya pada sertifikat baru sebelum ia meninggalkan langkah pendaftaran, selagi kesalahan masih berharga satu tanda tangan, bukan insiden. Simpan keluaran bersama tiket agar orang berikutnya dapat melihat nama mana yang benar-benar diterima server.
Akhiri dengan koneksi nyata dan bandingkan alamat yang diberikan serta rute yang didorong dengan berkas kebijakan, bukan dengan apa yang Anda maksudkan untuk ditulis. Jika dua perangkat melaporkan alamat statis yang sama, daftar itu memiliki tabrakan yang tidak akan pernah diungkap oleh pemeriksaan sertifikat mana pun.