Python Requests: Bundel CA tempatnya di verify, bukan cert
Letakkan materi kepercayaan CA yang disetujui dalam konfigurasi verifikasi alih-alih memperlakukan kesalahan sertifikat sebagai permintaan kunci privat klien.
Seorang rekan memberi Anda sertifikat CA organisasi. Requests menawarkan parameter bernama cert. Namanya tampak cocok, tetapi keduanya menjawab pertanyaan yang berbeda.
| Pengaturan | Tujuan |
|---|---|
verify | Memilih materi kepercayaan yang digunakan untuk memverifikasi pihak lain |
cert | Menyajikan sertifikat klien, beserta kunci privatnya, saat autentikasi klien diperlukan |
Untuk CA intersepsi yang disetujui, operasi Requests dapat memilih bundel CA yang dimaksud:
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)Di sini routes adalah pemetaan proxy yang sudah ada di aplikasi. Jalur harus menyebutkan bundel kepercayaan yang benar dan dapat dibaca untuk klien ini. Itu bukan sertifikat situs web yang diunduh lalu dipilih hanya karena koneksi gagal.
Variabel lingkungan REQUESTS_CA_BUNDLE adalah masukan kepercayaan lain yang didukung. Periksa jalur pengiriman yang sebenarnya jika tampak tidak efektif; alur kerja permintaan yang telah disiapkan dan pengaturan eksplisit dapat mengubah cara konfigurasi lingkungan digabungkan.
Anda semestinya tidak memerlukan kunci privat CA
Sertifikat CA publik adalah yang dibutuhkan klien untuk mengenali penerbit yang disetujui. Kunci privat penandatangannya adalah rahasia kuat pihak lain. Kunci itu tidak boleh dibagikan kepada pengguna aplikasi sebagai bagian dari perbaikan kepercayaan proxy rutin.
Sertifikat klien mungkin masih diperlukan oleh tujuan tertentu atau oleh hubungan TLS lain yang dikonfigurasi terpisah. Itu persyaratan terpisah, bukan sesuatu yang disimpulkan dari setiap kesalahan verifikasi sertifikat.
Saat kesalahan berikutnya muncul, sebutkan operasinya: memuat berkas CA, memverifikasi sertifikat pihak lain, atau menyajikan identitas klien. Memindahkan berkas antara verify dan cert sampai pesannya berubah bukan cara yang andal untuk memilih perannya.