tujuan sijil tidak disokong: mengapa CA perantaraan gagal
Apabila OpenVPN melaporkan tujuan sijil tidak disokong, sijil hujung mungkin tidak bersalah. Bandingkan tujuan sijil hujung dengan dasar rantaian sebelum mengeluarkan semula apa-apa.
Tujuan sijil pelayan kelihatan betul, kunci sepadan, tarikhnya baik, dan sambungan masih gagal dengan unsupported certificate purpose. Butiran yang menyelesaikannya biasanya berada pada baris yang sama dengan ralat: nilai kedalaman dan subject yang menamakan sijil lebih tinggi dalam rantaian. Dua ujian berbeza dijalankan, dan hanya satu daripadanya berkaitan sijil hujung. Membandingkannya menjelaskan mengapa menggantikan sijil pelayan tidak mengubah apa-apa.
Sijil mana yang sebenarnya ditolak oleh pengesah
Rantaian bukan satu objek yang diulang tiga kali. Sijil hujung membawa nama dan kunci pelayan, sijil perantaraan menghubungkannya dengan akar, dan setiap satu mempunyai tempoh sah, kekangan dan kegunaan sendiri. Apabila ralat menamakan kedalaman, nombor itu mengenal pasti kedudukan dalam rantaian yang dibina pengesah, dan ia mungkin bukan kedudukan yang anda jangkakan jika pelayan menghantar rantaian yang tidak dijangka.
Baca medan sijil pada kedalaman itu, bukan sijil yang anda anggap bersalah. Minta dua sambungan yang mengehadkan pengeluaran daripada membuang setiap medan, kerana jawapannya hampir selalu ada pada salah satunya. Output sambungan selamat dikongsi; kunci peribadi tidak sekali-kali.
openssl x509 -in issuing-ca.pem -noout -subject -issuer -ext basicConstraints -ext extendedKeyUsage
Jika sijil yang dinamakan ialah perantaraan yang penggunaan kunci diperluasnya menyebut sesuatu yang tidak berkaitan pengesahan pelayan TLS, selebihnya kegagalan mengikut secara mekanikal. Rantaian tidak boleh digunakan untuk tujuan yang diminta oleh OpenVPN.
Tujuan sijil hujung dan dasar rantaian ialah dua ujian
Ujian sijil hujung mengajukan soalan sempit: adakah sijil entiti akhir ini membenarkan pengesahan pelayan untuk nama ini? Ujian rantaian mengajukan soalan lebih luas: bolehkah setiap sijil dalam laluan berkhidmat untuk tujuan itu? Pihak berkuasa sijil yang hanya dibenarkan mengeluarkan sijil klien akan lulus pemeriksaan tandatangannya sendiri dan masih gagal ujian kedua, kerana laluan yang dibenarkannya tidak merangkumi tujuan yang diperlukan aplikasi. Kedua-dua ujian gagal dengan kata-kata yang sama dan mempunyai pembaikan yang sangat berbeza.
Itulah sebabnya sijil hujung yang baru dikeluarkan, betul pada setiap medan yang kelihatan, boleh gagal serta-merta. Itulah juga sebabnya pembaikan biasanya terletak pada profil pihak berkuasa pengeluar dan bukan pada konfigurasi VPN.
EKU yang tiada bukan EKU yang mengehadkan
RFC 5280 menjadikan sambungan penggunaan kunci diperluas sebagai pilihan dan, apabila ada, mengehadkan. Sijil CA tanpa sambungan itu oleh itu tidak mengatakan «tidak» kepada pengesahan pelayan, manakala yang hanya menyenaraikan tujuan tidak berkaitan telah mengatakan sesuatu yang sangat khusus. Menganggap kedua-dua keadaan itu setara menghasilkan diagnosis yang salah dan, lebih teruk, pembaikan yang salah. Perbezaan ini juga menjelaskan mengapa dua pihak berkuasa yang kelihatan serupa dalam konsol berkelakuan sangat berbeza dalam rantaian.
Tingkah laku pustaka juga tidak seragam di sini. dokumen OpenSSL tentang pilihan pengesahan menerangkan layanannya sendiri terhadap pemeriksaan tujuan pada sijil CA, dan layanan itu ialah dasar pelaksanaan, bukan peraturan yang diikuti setiap tindanan TLS secara identik. Terangkan apa yang dilakukan pengesah anda, kemudian sahkan dengan versi yang benar-benar anda jalankan.
Hasilkan semula kegagalan secara luar talian sebelum mengeluarkan semula
Pengesahan luar talian mengeluarkan aplikasi daripada persamaan. Jika rantaian gagal dengan cara yang sama di bawah tujuan yang sama, sijil itu masalahnya dan tiada konfigurasi pelayan dapat menyembunyikannya. Jika rantaian lulus secara luar talian sedangkan perkhidmatan masih menolak, aplikasi meminta tujuan lain atau menggunakan rantaian lain daripada yang anda uji.
openssl verify -purpose sslserver -show_chain -CAfile root-ca.pem -untrusted issuing-ca.pem vpn-server.pem
-show_chain penting kerana ia mencetak laluan yang dibina alat, dan itu selalunya bukan susunan fail yang anda berikan. Output itu ialah cara terpantas untuk menemui bahawa sijil perantaraan kedua ditarik daripada stor kepercayaan, bahawa pelayan menghantar varian bertandatangan silang yang tidak anda maksudkan, atau bahawa bendera tujuan yang anda salin daripada tutorial milik peranan lain daripada yang sedang dilayan.
Betulkan dasar pengeluaran, bukan panggilan pengesahan
Pembaikan tahan lama ialah sijil perantaraan yang dikeluarkan di bawah dasar yang membenarkan tujuan yang harus dilayaninya, dengan kekangan ditulis dan disemak. Menambah setiap tujuan pada setiap pihak berkuasa bukanlah dasar; ia menghapuskan kekangan yang memberi makna kepada sambungan itu, dan biasanya bertahan lebih lama daripada insiden yang mencetuskannya. Nota ringkas dalam profil yang menerangkan peranan apa yang boleh disahkan oleh pihak berkuasa menghalang pengeluaran semula seterusnya daripada mengulangi perdebatan yang sama.
Mematikan pengesahan ialah jalan pintas menggoda yang lain, dan ia mengubah masalah sijil menjadi masalah kepercayaan. Kekalkan pemeriksaan tujuan, betulkan rantaian, dan jalankan semula pengesahan luar talian yang sama untuk mengesahkan laluan kini berkhidmat untuk peranan yang dimaksudkan sebelum menyentuh perkhidmatan itu lagi.