Ralat TLS hanya pada VPN korporat: betulkan stor kepercayaan yang betul
Alat sama, komputer riba sama, hanya VPN merosakkan TLS. Baca mesej itu, cari bundel CA yang dibaca binari, dan tambah satu akar dan bukan mematikan pemeriksaan.
Binaan Go, pemasangan Composer dan klien Python semuanya berfungsi di rumah dan semuanya gagal di dalam VPN syarikat. Corak itu memberitahu anda tentang laluan, bukan tentang aplikasi. Sesuatu pada terowong mengubah rantaian sijil yang dilihat oleh proses anda, atau menetapkan semula jabat tangan sebelum mana-mana rantaian tiba. Kedua-dua kerosakan kelihatan serupa dalam terminal dan memerlukan tindak balas yang sama sekali berbeza.
Tiga mesej, tiga mekanisme
Ralat x509 certificate signed by unknown authority bermaksud rantaian telah dibina dan akarnya tiada dalam stor kepercayaan yang digunakan oleh proses itu. Ralat self-signed certificate in certificate chain biasanya bermaksud proksi pemeriksaan menjawab dengan sijilnya sendiri, dan itu ialah rantaian yang tidak dikenali oleh masa jalan anda. SSL EOF semasa jabat tangan bermaksud sambungan ditutup sebelum sebarang sijil yang boleh digunakan dihantar, dan itu ialah peranti tengah yang menolak ClientHello, sama sekali bukan masalah kepercayaan.
Menambah bendera tidak selamat membuatkan ketiga-tiga mesej hilang sementara pemintasan kekal di tempatnya, dan ia membuang pemeriksaan yang akan menangkap penyerang sebenar.
Cari bundel yang sebenarnya dibaca oleh proses itu
Akar korporat yang dipasang dalam stor Windows membaiki pelayar dan aplikasi .NET yang merujuk stor sistem. Ia tidak melakukan apa-apa untuk binaan yang berjalan di dalam kontena, yang membawa bundel CA sendiri, dan tidak juga untuk proses Python yang menggunakan certifi atau proses Node yang menggunakan senarai bawaannya. Go membaca kumpulan sistem persekitaran tempat binari berjalan, iaitu kontena, bukan komputer riba. Jadi satu mesin menghasilkan pelayar yang berfungsi dan alat binaan yang gagal pada masa yang sama.
Tanya alat itu dan bukan membuat andaian. python3 -c "import ssl; print(ssl.get_default_verify_paths())" mencetak fail yang akan dirujuk oleh Python, dan node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" menunjukkan sama ada penggantian sudah ditetapkan. Untuk kontena, jalankan pemeriksaan yang sama di dalam imej, kerana itulah persekitaran yang sebenarnya digunakan oleh binaan.
Pasang satu akar di tempat binaan berjalan
Dapatkan akar pemeriksaan daripada IT sebagai fail PEM dan sahkan cap jarinya melalui saluran berasingan sebelum mempercayainya. Pada imej berasaskan Debian, salin ke /usr/local/share/ca-certificates/ dan jalankan update-ca-certificates; imej keluarga RHEL menggunakan update-ca-trust selepas fail diletakkan dalam /etc/pki/ca-trust/source/anchors/. Dalam binaan kontena, tambah langkah itu sebelum arahan yang gagal supaya lapisan itu dicache di atas pemasangan kebergantungan.
Untuk devcontainer tempatan, lekapkan PEM dan jalankan arahan kemas kini yang sama semasa mula dan bukan membakarnya ke dalam imej peribadi yang tiada orang lain dapat hasilkan semula. Alat yang membawa bundel sendiri memerlukan penggantian terdokumentasi sendiri: pip mempunyai tetapan sijil, npm mempunyai tetapan cafile, dan kebanyakan yang lain menerima pemboleh ubah persekitaran standard.
Ini bukan sama dengan menerima sebarang sijil. Anda menambah satu akar tertentu, yang diperoleh daripada pihak yang melakukan pemeriksaan, kepada satu persekitaran, dan pengesahan kekal hidup untuk setiap rantaian lain. Catat fail mana yang ditambah dan bila ia luput, kerana akar pemeriksaan diperbaharui seperti mana-mana CA lain.
Apabila jabat tangan mati sebelum sijil
Jika tiada apa yang dikemukakan, tiada perubahan stor kepercayaan akan membantu. Bandingkan permintaan yang sama dengan terowong hidup dan mati, kemudian periksa rantaian itu secara langsung dengan openssl s_client -connect host:443 -servername host -showcerts. Sambungan yang selesai di luar VPN dan ditetapkan semula di dalamnya ialah keputusan dasar oleh peranti tengah, dan ubatnya ialah pengecualian untuk hos itu, bukan sijil lain. Mintalah pendaftaran pakej atau titik akhir API dibenarkan melalui tanpa diubah.
Membahagi terowong supaya alat memintas VPN mengelakkan pemeriksaan bagi trafik itu, yang mungkin melanggar dasar dan tidak menjadikan alat itu boleh dipercayai.
Catat hasilnya bagi setiap alat
Nota pendek yang menyenaraikan binari, fail kepercayaan yang dibacanya, pemboleh ubah persekitaran yang terlibat dan pengecualian yang diluluskan menyelamatkan orang seterusnya daripada seluruh diagnosis. Simpan nota itu bagi setiap alat dan bukan setiap komputer riba, kerana komputer riba jarang menjadi perkara yang berubah.
Dan simpan dua ayat secara berasingan dalam tiket: kami memasang akar korporat tertentu, dan kami mematikan pengesahan. Hanya satu daripada kedua-duanya ialah tindakan sokongan.