Cara OpenVPN menyelesaikan sijil dan kunci: PEM sebaris atau laluan
Arahan yang sama membawa sama ada laluan fail atau objek PEM terbenam. Baca yang mana satu digunakan oleh profil yang dimuatkan sebelum memindahkan sijil.
Mesej itu mengatakan bahawa OpenVPN tidak boleh memuatkan sijil sebaris, sedangkan nama fail yang tersimpan dalam kepala anda mengatakan sebaliknya. Apa yang diterima penghurai lebih penting daripada apa yang terkandung dalam sistem fail, kerana arahan cert menerima dua jenis nilai yang sama sekali berbeza. Satu ialah laluan yang dibukanya; satu lagi ialah teks PEM yang tiba di dalam konfigurasi. Sehingga anda tahu bentuk mana yang diterima oleh klien yang sedang berjalan, setiap pembetulan ialah tekaan.
Dua bentuk penyimpanan, satu arahan
Arahan cert, key dan ca masing-masing menerima laluan atau blok sebaris. Apabila nilainya ialah laluan, OpenVPN membuka fail itu dan membaca objek daripada cakera. Apabila konfigurasi mengandungi blok yang dibatasi oleh tag cert, arahan yang sama menggunakan kandungan antara tag tersebut sebagai gantinya, dan tiada fail berasingan terlibat.
Kedua-dua bentuk menghasilkan jenis objek yang sama pada akhirnya, sebab itu penggunaan yang berfungsi boleh beralih antara keduanya tanpa apa-apa perubahan lain. Profil yang membawa sijil klien dan kunci peribadi terbenam bersifat serba lengkap, dan menyalinnya ke mesin lain berfungsi tanpa menyalin direktori sijil sekali.
Sebaliknya tidak benar. Meletakkan client.crt di sebelah profil yang menanam datanya sendiri tidak mengubah apa-apa, kerana tiada apa dalam konfigurasi merujuk fail itu. Inilah sebab paling biasa sesuatu fail yang jelas wujud kelihatan diabaikan.
Bagaimana blok sebaris menjadi objek
Kandungan sebaris diekstrak daripada konfigurasi dan diserahkan kepada penghurai PEM sebagai teks. Penghurai itu menjangka sempadan biasa: baris BEGIN, muatan base64 dan baris END yang sepadan. Jika blok itu terpotong oleh salinan yang gagal, dibalut dalam HTML oleh halaman muat turun, atau dibuka dalam editor yang menormalkan sengkang, penghurai gagal pada kandungan yang kelihatan hadir.
<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>
Itulah juga sebabnya perkataan ralat itu mengelirukan. Perkataan sebaris menerangkan di mana pemuat melihat, bukan apa yang ditemuinya di sana. Fail yang dinamakan dalam konfigurasi dan objek yang tertanam di dalamnya boleh menghasilkan aduan yang sama apabila bait asasnya tidak boleh digunakan.
Semak bentuk mana yang sebenarnya digunakan oleh profil yang dimuatkan, bukan fail mana yang kebetulan dibuka oleh editor anda:
grep -nE '^(ca|cert|key) |^<(ca|cert|key)>' client.ovpn
Bagaimana rujukan laluan diselesaikan
Nilai laluan dibuka secara relatif kepada direktori kerja klien, bukan kepada direktori yang mengandungi konfigurasi. Di bawah systemd direktori kerja itu ialah apa yang ditetapkan oleh unit, dan jalan interaktif daripada shell anda mewarisi sesuatu yang sama sekali lain. Sebab itulah fail konfigurasi yang sama boleh berfungsi apabila anda mengujinya secara manual dan gagal sebagai perkhidmatan.
Laluan relatif mewarisi kekaburan yang sama. Apabila anda melihat nama fail kosong, tanyakan apakah direktori semasa proses itu dalam pengeluaran dan bukannya menganggap ia sepadan dengan terminal anda.
Untuk sijil yang disimpan secara berasingan, penghuraian luar talian mengesahkan objek itu sebelum anda menyahpepijat apa-apa di atasnya:
openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check
Perintah itu membuktikan fail boleh dibaca dan sah dari segi struktur. Ia tidak membuktikan bahawa rakan mempercayai pengeluar, bahawa sijil itu masih dalam tetingkap kesahihannya, atau bahawa kunci itu miliknya.
Apa yang boleh dan tidak boleh diberitahu oleh ralat penghurai
Kegagalan penghuraian menyetempatkan masalah kepada satu input dan satu peringkat. Ia tidak memberitahu bentuk penyimpanan mana yang digunakan oleh klien, dan ia tidak memberitahu sama ada objek itu akan diterima. Itu soalan berasingan dengan bukti berasingan.
Setelah penghuraian berjaya, kegagalan seterusnya tergolong dalam peringkat yang lebih lewat. Penolakan kepercayaan, ketidakpadanan tujuan atau ketidakpadanan kunci dilaporkan oleh rakan atau oleh lapisan TLS, bukan oleh pemuat. Menggantikan fail yang sama berulang kali tidak akan mengalihkan ralat itu.
Jauhkan separuh sensitif daripada laporan awam semasa anda menyiasat. Kongsikan nama arahan, teks ralat dan struktur blok, dengan bahan kunci dan sebarang muatan pengenalan dibuang. Manual openvpn(8) mendokumenkan kedua-dua bentuk arahan fail dan tingkah laku direktori kerja di belakangnya.