Build Go, instalasi Composer, dan klien Python semuanya bekerja di rumah dan semuanya gagal di dalam VPN perusahaan. Pola itu memberi tahu Anda tentang jalurnya, bukan tentang aplikasinya. Sesuatu di terowongan mengubah rantai sertifikat yang dilihat proses Anda, atau mereset jabat tangan sebelum rantai apa pun tiba. Kedua gangguan itu terlihat serupa di terminal dan menuntut respons yang sangat berbeda.

Tiga pesan, tiga mekanisme

Galat x509 certificate signed by unknown authority berarti sebuah rantai telah dibangun dan akarnya tidak ada di penyimpanan kepercayaan yang dipakai proses itu. Galat self-signed certificate in certificate chain biasanya berarti proksi inspeksi menjawab dengan sertifikatnya sendiri, yaitu rantai yang tidak dikenali runtime Anda. SSL EOF selama jabat tangan berarti koneksi ditutup sebelum sertifikat yang bisa dipakai dikirim, dan itu adalah perangkat tengah yang menolak ClientHello, sama sekali bukan masalah kepercayaan.

Menambahkan tanda tidak aman membuat ketiga pesan hilang sementara penyadapan tetap berlangsung, dan itu menghapus pemeriksaan yang akan menangkap penyerang sungguhan.

Temukan bundel yang benar-benar dibaca proses itu

Akar korporat yang dipasang di penyimpanan Windows memperbaiki peramban dan aplikasi .NET yang mengonsultasikan penyimpanan sistem. Itu tidak melakukan apa pun untuk build yang berjalan di dalam kontainer, yang membawa bundel CA-nya sendiri, dan tidak juga untuk proses Python yang memakai certifi atau proses Node yang memakai daftar bawaannya. Go membaca kumpulan sistem dari lingkungan tempat biner berjalan, yaitu kontainer, bukan laptop. Jadi satu mesin menghasilkan peramban yang bekerja dan alat build yang gagal pada saat yang sama.

Tanyakan kepada alatnya, jangan menganggap. python3 -c "import ssl; print(ssl.get_default_verify_paths())" mencetak berkas yang akan dikonsultasikan Python, dan node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" menunjukkan apakah penggantian sudah disetel. Untuk kontainer, jalankan pemeriksaan yang sama di dalam image, karena itulah lingkungan yang benar-benar dipakai build.

Pasang satu akar di tempat build berjalan

Dapatkan akar inspeksi dari TI sebagai berkas PEM dan verifikasi sidik jarinya lewat saluran terpisah sebelum memercayainya. Pada image berbasis Debian, salin ke /usr/local/share/ca-certificates/ dan jalankan update-ca-certificates; image keluarga RHEL memakai update-ca-trust setelah berkasnya diletakkan di /etc/pki/ca-trust/source/anchors/. Dalam build kontainer, tambahkan langkah itu sebelum perintah yang gagal agar lapisannya di-cache di atas pemasangan dependensi.

Untuk devcontainer lokal, pasang PEM-nya dan jalankan perintah pembaruan yang sama saat mulai alih-alih memanggangnya ke dalam image pribadi yang tidak bisa direproduksi orang lain. Alat yang membawa bundel sendiri butuh penggantian terdokumentasi sendiri: pip punya pengaturan sertifikat, npm punya pengaturan cafile, dan sebagian besar lainnya menerima variabel lingkungan standar.

Ini bukan sama dengan menerima sertifikat apa pun. Anda menambahkan satu akar tertentu, yang diperoleh dari pihak yang melakukan inspeksi, ke satu lingkungan, dan verifikasi tetap aktif untuk setiap rantai lain. Catat berkas mana yang ditambahkan dan kapan kedaluwarsa, karena akar inspeksi diperbarui seperti CA lain.

Ketika jabat tangan mati sebelum sertifikat

Jika tidak ada yang disajikan, tidak ada perubahan penyimpanan kepercayaan yang akan menolong. Bandingkan permintaan yang sama dengan terowongan hidup dan mati, lalu periksa rantainya langsung dengan openssl s_client -connect host:443 -servername host -showcerts. Koneksi yang selesai di luar VPN dan direset di dalamnya adalah keputusan kebijakan perangkat tengah, dan obatnya adalah pengecualian untuk hos itu, bukan sertifikat lain. Mintalah agar registri paket atau titik akhir API dilewatkan tanpa diubah.

Memecah terowongan agar alat melewati VPN menghindari inspeksi bagi lalu lintas itu, yang bisa melanggar kebijakan dan tidak membuat alat itu tepercaya.

Catat hasilnya per alat

Catatan singkat yang mencantumkan biner, berkas kepercayaan yang dibacanya, variabel lingkungan yang berperan, dan pengecualian yang disetujui menghemat seluruh diagnosis bagi orang berikutnya. Simpan catatan per alat, bukan per laptop, karena laptop jarang menjadi hal yang berubah.

Dan pisahkan dua kalimat di tiket: kami memasang akar korporat tertentu, dan kami mematikan verifikasi. Hanya satu dari keduanya yang merupakan tindakan dukungan.

Artikel terkait