Dua profil, satu terhubung dan satu tidak, dan cara cepat melihat sebabnya adalah diff. Masalahnya, diff yang sama mencetak kunci privat inline, kunci statis, dan blok kredensial apa pun yang dibawa berkas, dan orang menempelkan keluarannya ke obrolan sebelum menyadarinya. Memutuskan apa yang dibandingkan datang sebelum menjalankan perintah. Bandingkan struktur dan peran pada salinan terlindungi, dan buat berkas tersunting terpisah saat orang lain perlu melihatnya.

Apa yang sebenarnya dibawa berkas .ovpn

Berkas .ovpn adalah konfigurasi dengan blok inline opsional. Ia dapat memuat sertifikat CA, sertifikat klien, kunci privat, kunci tls-auth atau tls-crypt, dan direktif yang menunjuk berkas eksternal atau meminta kredensial. Dua berkas bisa tampak hampir identik dan berbeda hanya di dalam blok, atau berbeda pada satu direktif yang mengubah transport sepenuhnya. Jumlah baris tidak memberi tahu Anda mana dari itu yang terjadi.

Perbedaan di dalam blok kunci bukan bukti publik apa pun. Sertifikat yang diterbitkan ulang dan sertifikat dengan kunci baru dapat menghasilkan bentuk perubahan yang sama, jadi ketidakcocokan blok mengatakan materinya berbeda, bukan keputusan mana yang menghasilkannya. Perlakukan itu sebagai sinyal untuk membandingkan bidang, bukan sebagai temuan.

Bandingkan menurut peran, bukan menurut baris

Ikuti urutan koneksi itu sendiri: endpoint dan transport lebih dulu, lalu kepercayaan dan identitas yang diharapkan, lalu autentikasi pengguna, lalu rute, DNS, dan kait skrip. Urutan itu cocok dengan apa yang dilakukan klien, jadi perbedaan pertama yang Anda temui adalah hal pertama yang bisa memutus koneksi. Membandingkan secara alfabetis malah menyebarkan pengaturan terkait ke seluruh keluaran.

Lintasan yang sadar bidang melihat butir-butir ini, dalam urutan itu. Apa pun yang diminta klien secara interaktif termasuk baris autentikasi, bukan baris kepercayaan.

  • remote, proto dan port, termasuk setiap blok koneksi.
  • ca dan cert: penerbit, subjek, dan tanggal kedaluwarsa.
  • Apakah kunci privat ada sama sekali, tidak pernah apa isinya.
  • tls-auth atau tls-crypt keberadaan dan arah kunci.
  • Direktif autentikasi, termasuk rujukan berkas kredensial apa pun.
  • Rute, opsi DNS, dan kait skrip yang berjalan saat terhubung.

Saat berkas memuat beberapa blok koneksi, simpan setiap opsi bersama endpoint-nya. Membandingkan hanya baris remote pertama bisa melewatkan alternatif yang benar-benar dipilih klien di jaringan ini.

Mengapa diff biasa adalah alat yang salah

Diff biasa dibuat untuk teks, bukan untuk rahasia. Ia akan dengan senang hati mencetak kunci privat ke riwayat layar, dan tidak akan memberi tahu Anda bahwa direktif yang Anda tatap tidak relevan dengan kegagalan. Ekstraksi bidang lebih aman sekaligus lebih terbaca, karena materi sertifikat dapat dibandingkan sebagai metadata alih-alih byte.

openssl x509 -in ca.crt -noout -subject -issuer -enddate
openssl x509 -in client.crt -noout -subject -issuer -enddate
grep -E '^(remote|proto|port|tls-auth|tls-crypt|route|dhcp-option)' profile.ovpn

Dua perintah pertama mencetak identitas dan masa berlaku tanpa menyentuh kunci, jadi keluarannya aman untuk ditempel. grep mencetak nama dan nilai direktif tetapi tidak pernah isi blok, yang menjadikannya lintasan pertama yang tepat saat Anda menduga perbedaan transport atau perutean. Jika blok itu sendiri harus dibandingkan, bandingkan hash-nya alih-alih isinya.

Buat salinan tersunting untuk tiket

Hapus rahasia nyata dan pengenal yang tidak perlu sambil mempertahankan nama bidang dan cukup struktur untuk menjelaskan perbedaannya. Penanda dengan bentuk yang sama tetap mengungkap di mana materi berada dan seberapa panjang, jadi putuskan apakah itu pun dapat diterima. Periksa lampiran akhirnya sendiri alih-alih memercayai perintah yang Anda ingat telah dijalankan. Jangan menyunting aslinya yang berfungsi hanya untuk membuat contoh, karena profil tersunting belum tentu dapat dijalankan dan tidak boleh diimpor ulang.

Jaga agar aslinya dapat dikenali lewat nama berkas dan hash alih-alih menyalinnya ke tiga direktori dengan nama serupa. String hash cukup untuk membuktikan berkas mana yang ditinjau dan tidak berbiaya apa pun jika bocor. Pangkas salinannya setelah perubahan ditutup agar orang berikutnya mewarisi satu berkas otoritatif.

Jaga perbandingan tetap terikat pada kegagalan

Perbandingan sepadan biayanya ketika menjawab pertanyaan tentang satu impor atau satu kegagalan koneksi. Sebut dulu langkah yang gagal, lalu bandingkan hanya bidang yang menjadi sandarannya; mengumpulkan semua kredensial milik klien dalam satu direktori membuat kebocoran berikutnya lebih mungkin dan diagnosis berikutnya lebih lambat. Semakin sempit pertanyaannya, semakin pendek daftar bidang yang dapat menjawabnya.

Jika berkas baru datang dari operator, pastikan jalur distribusinya sebelum mengganti materi kepercayaan. Setelah perubahan, periksa salinan terimpor yang benar-benar dipilih klien dan hasil yang dinegosiasikan, karena sebuah direktif bisa diabaikan atau dibaca berbeda oleh versi klien lain. Berkas di disk bukan bukti koneksi yang berjalan. Semantik direktif ada di manual OpenVPN 2.6.

Artikel terkait