Dua profil, satu bersambung dan satu tidak, dan cara cepat untuk melihat sebabnya ialah diff. Masalahnya, diff yang sama mencetak kunci peribadi sebaris, kunci statik dan mana-mana blok kelayakan yang dibawa fail itu, dan orang menampal output ke dalam sembang sebelum menyedarinya. Memutuskan apa yang anda bandingkan datang sebelum menjalankan arahan. Bandingkan struktur dan peranan pada salinan terlindung, dan bina fail tersunting berasingan apabila orang lain perlu melihatnya.

Apa yang sebenarnya dibawa oleh fail .ovpn

Fail .ovpn ialah konfigurasi dengan blok sebaris pilihan. Ia boleh memuatkan sijil CA, sijil klien, kunci peribadi, kunci tls-auth atau tls-crypt, dan arahan yang menunjuk ke fail luaran atau meminta kelayakan. Dua fail boleh kelihatan hampir serupa dan berbeza hanya di dalam blok, atau berbeza pada satu arahan yang mengubah pengangkutan sepenuhnya. Bilangan baris tidak memberitahu anda yang mana satu berlaku.

Perbezaan di dalam blok kunci bukan bukti awam tentang apa-apa. Sijil yang dikeluarkan semula dan sijil dengan kunci baharu boleh menghasilkan bentuk perubahan yang sama, jadi ketidakpadanan blok memberitahu bahan itu berbeza, bukan keputusan mana yang menghasilkannya. Anggap ia isyarat untuk membandingkan medan, bukan penemuan.

Bandingkan mengikut peranan, bukan mengikut baris

Ikut susunan sambungan itu sendiri: titik akhir dan pengangkutan dahulu, kemudian kepercayaan dan identiti yang dijangka, kemudian pengesahan pengguna, kemudian laluan, DNS dan cangkuk skrip. Urutan itu sepadan dengan apa yang klien lakukan, jadi perbezaan pertama yang anda temui ialah perkara pertama yang mungkin memutuskan sambungan. Membandingkan mengikut abjad sebaliknya menabur tetapan berkaitan di seluruh output.

Pas yang peka medan melihat perkara ini, dalam susunan itu. Apa-apa yang diminta klien secara interaktif tergolong dalam baris pengesahan, bukan baris kepercayaan.

  • remote, proto dan port, termasuk setiap blok sambungan.
  • ca dan cert: pengeluar, subjek dan tarikh tamat tempoh.
  • Sama ada kunci peribadi wujud sama sekali, tidak pernah apa isinya.
  • tls-auth atau tls-crypt kehadiran dan arah kunci.
  • Arahan pengesahan, termasuk sebarang rujukan fail kelayakan.
  • Laluan, pilihan DNS dan cangkuk skrip yang berjalan semasa bersambung.

Apabila fail memuatkan beberapa blok sambungan, simpan setiap pilihan dengan titik akhirnya. Membandingkan hanya baris remote pertama boleh terlepas alternatif yang sebenarnya dipilih klien pada rangkaian ini.

Mengapa diff biasa ialah alat yang salah

Diff biasa dibina untuk teks, bukan untuk rahsia. Ia akan mencetak kunci peribadi ke dalam sejarah skrin dengan senang hati, dan ia tidak akan memberitahu anda bahawa arahan yang anda tatap tidak berkaitan dengan kegagalan itu. Pengekstrakan medan lebih selamat dan lebih mudah dibaca sekali gus, kerana bahan sijil boleh dibandingkan sebagai metadata dan bukan bait.

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 arahan pertama mencetak identiti dan kesahan tanpa menyentuh kunci, jadi outputnya selamat untuk ditampal. grep mencetak nama dan nilai arahan tetapi tidak pernah isi blok, yang menjadikannya pas pertama yang betul apabila anda mengesyaki perbezaan pengangkutan atau penghalaan. Jika blok itu sendiri perlu dibandingkan, bandingkan hashnya dan bukan kandungannya.

Bina salinan tersunting untuk tiket

Buang rahsia sebenar dan pengecam yang tidak perlu sambil mengekalkan nama medan dan struktur yang cukup untuk menerangkan perbezaan. Penanda dengan bentuk yang sama masih mendedahkan di mana bahan itu berada dan berapa panjangnya, jadi tentukan sama ada itu pun boleh diterima. Semak lampiran akhir itu sendiri dan bukan mempercayai arahan yang anda ingat telah dijalankan. Jangan sunting asal yang berfungsi hanya untuk menghasilkan contoh, kerana profil tersunting belum tentu boleh dijalankan dan tidak boleh diimport semula.

Simpan yang asal boleh dikenal pasti melalui nama fail dan hash dan bukan menyalinnya ke dalam tiga direktori dengan nama serupa. String hash cukup untuk membuktikan fail mana yang disemak dan tidak berbelanja apa-apa jika ia bocor. Pangkas salinan selepas perubahan ditutup supaya orang seterusnya mewarisi satu fail berwibawa.

Kekalkan perbandingan terikat pada kegagalan

Perbandingan berbaloi dengan kosnya apabila ia menjawab soalan tentang satu import atau satu kegagalan sambungan. Namakan dahulu langkah yang gagal, kemudian bandingkan hanya medan yang bergantung padanya; mengumpul semua kelayakan klien dalam satu direktori menjadikan kebocoran seterusnya lebih mungkin dan diagnosis seterusnya lebih perlahan. Semakin sempit soalan, semakin pendek senarai medan yang boleh menjawabnya.

Jika fail baharu datang daripada pengendali, sahkan laluan pengedarannya sebelum menggantikan bahan kepercayaan. Selepas perubahan, periksa salinan yang diimport yang benar-benar dipilih klien dan hasil yang dirundingkan, kerana sesuatu arahan mungkin diabaikan atau dibaca berbeza oleh versi klien lain. Fail pada cakera bukan bukti sambungan yang berjalan. Semantik arahan ada dalam manual OpenVPN 2.6.

Artikel berkaitan