Dua file, dua direktif, dan kebiasaan menamai keduanya menurut hal yang mereka konfigurasi. Begitulah dh.pem berakhir di baris tls-auth dan klien gagal dengan pesan tentang format kunci yang tidak terduga. Keputusan di depan Anda bukanlah file mana yang lebih kuat. Melainkan peran mana yang benar-benar dibutuhkan penerapan, dan tiga kondisi memutuskannya: pertukaran kunci apa yang akan dinegosiasikan tumpukan TLS Anda, apakah Anda ingin autentikasi kanal kendali sama sekali, dan apakah materi harus tetap rahasia.

Jawab semuanya secara berurutan dan pertanyaan file akan terjawab sendiri. Lewatkan dan nama direktif mulai tampak dapat dipertukarkan, yang justru merupakan keadaan tempat kesalahan itu berasal.

Baca label sebelum nama file

Baris pertama file lebih informatif daripada namanya, karena nama adalah konvensi manusia sedangkan label dihasilkan oleh alat. Parameter Diffie-Hellman membawa label PEM BEGIN DH PARAMETERS. Kunci statis OpenVPN adalah struktur yang sangat berbeda, dengan header dan muatan heksadesimalnya sendiri.

Mengganti nama tidak mengonversi apa pun. File parameter bernama ta.key tetap parameter, dan kunci statis bernama dh.pem tetap kunci statis; parser membaca isinya dan menolak ketidakcocokan. Periksa sebelum menyunting profil:

head -n 1 dh.pem
head -n 1 ta.key

Tiga kondisi yang menentukan file mana yang Anda butuhkan

Kondisi pertama adalah pertukaran. Jabat tangan Diffie-Hellman medan hingga memerlukan grup, dan direktif dh adalah tempat server menamai parameternya. Jabat tangan kurva eliptik sama sekali tidak memerlukan file itu, karena kurva adalah himpunan parameternya. Jika server Anda hanya menegosiasikan suite ECDHE, file DH adalah beban mati, bukan kekuatan tambahan.

Kondisi kedua adalah autentikasi kanal kendali, fitur terpisah dengan materinya sendiri. File tls-auth adalah kunci statis bersama yang dipegang kedua peer, dipakai untuk menandatangani paket kanal kendali agar peer yang tidak terautentikasi bahkan tidak dapat menyelesaikan jabat tangan. Ia ada baik Anda memakai DH medan hingga maupun tidak, dan tidak ada hubungannya dengan parameter grup.

Kondisi ketiga adalah kerahasiaan dan distribusi. Parameter DH boleh diterbitkan tanpa melemahkan sesi, karena nilai rahasia dibuat per jabat tangan dan tidak pernah meninggalkan peer. Kunci statis tidak boleh diterbitkan: ia adalah byte yang sama di kedua ujung, tidak berotasi sendiri, dan siapa pun yang memegangnya dapat menghasilkan tanda tangan kanal kendali yang sah. Kedua jawaban itu mengarah ke aturan penanganan yang sangat berbeda, itulah sebabnya satu file bisa berada di repositori dan yang lain tidak.

Hasilkan materi yang tepat untuk setiap peran

Gunakan alat yang menghasilkan format yang diharapkan direktif, bukan mengonversi di antaranya. Untuk kunci bersama pada OpenVPN 2.6, bentuk bertipe dari generator menyatakan tujuannya secara eksplisit.

openvpn --genkey tls-auth ta.key

Perintah itu membuat materi rahasia baru; ia tidak memperbaiki atau memeriksa kunci yang ada, dan menjalankannya lagi memberi Anda kunci berbeda yang tidak dimiliki peer lain. Salin file hasilnya ke peer yang membutuhkannya melalui kanal yang akan Anda pakai untuk rahasia bersama apa pun, dan jaga konvensi arah tetap konsisten: dengan tls-auth, satu sisi memakai key-direction 0 dan sisi lain key-direction 1.

Parameter DH, saat Anda membutuhkannya, berasal dari pembangkitan parameter, bukan dari generator kunci, dan asal-usulnya penting meskipun keluarannya publik. Grup yang diambil dari sumber tak dikenal tidak menjadi tepercaya karena bersifat publik; ia tetap harus berupa grup yang disepakati peer Anda dan yang tidak dilemahkan oleh ukuran atau konstruksinya.

Apa yang dilakukan dh none dan apa yang tidak

dh none adalah direktif nyata dengan makna sempit: tidak ada file parameter medan hingga yang akan dimuat, karena jabat tangan memakai Diffie-Hellman kurva eliptik. Ia bukan singkatan untuk “lewati langkah DH” dalam arti melemahkan apa pun, dan tentu saja tidak menyuruh OpenVPN menerima file lain sebagai pengganti.

Dua kesalahan muncul dari salah membacanya. Yang pertama adalah menganggap dh none menghapus kebutuhan akan tls-auth, padahal keduanya mengendalikan hal berbeda. Yang kedua adalah menyimpan baris dh usang di samping konfigurasi khusus kurva lalu bertanya-tanya file mana yang sebenarnya dipakai server; jika direktifnya ada, file dibaca, dan jalur yang rusak di sana menggagalkan startup karena alasan yang tidak berkaitan dengan pertukaran yang akan dinegosiasikan.

Jika file yang salah sudah diterapkan

Pulihkan rahasia yang dimaksud dari pemilik profil dan jangan sentuh verifikasi sertifikat selama melakukannya. Kegagalannya adalah ketidakcocokan format, bukan kegagalan kepercayaan, dan menonaktifkan verifikasi untuk melewati kesalahan menggantikan masalah startup dengan masalah yang senyap.

Lalu pisahkan dua insiden yang cenderung digabung orang. Menerbitkan file parameter DH hampir tidak berbahaya, karena parameternya memang publik sejak desain. Menyingkap kunci tls-auth adalah peristiwa lain: kunci itu mengautentikasi paket kanal kendali bagi setiap peer yang memegangnya, jadi penggantiannya harus dikoordinasikan di seluruh penerapan, bukan diterapkan pada satu host.

Pemeriksaan lima menit memutuskan kasus mana yang Anda alami: baca baris pertama setiap file, pastikan direktif yang merujuknya, dan pastikan distribusi file sesuai dengan tuntutan materi. Itu pekerjaan yang lebih kecil daripada membuat ulang PKI yang berfungsi, dan itulah yang sejak awal ditunjuk oleh tiga kondisi tadi.

Artikel terkait