Python Requests: ชุด CA อยู่ใน verify ไม่ใช่ cert
ใส่เนื้อหาความน่าเชื่อถือ CA ที่อนุมัติแล้วในการกำหนดค่าการตรวจสอบ แทนที่จะถือว่าข้อผิดพลาดของใบรับรองเป็นคำขอคีย์ส่วนตัวของไคลเอนต์
เพื่อนร่วมงานมอบใบรับรอง CA ขององค์กรให้คุณ Requests มีพารามิเตอร์ชื่อ cert ชื่อทั้งสองดูเหมือนคู่กัน แต่ตอบคำถามที่ต่างกัน
| การตั้งค่า | จุดประสงค์ |
|---|---|
verify | เลือกเนื้อหาความน่าเชื่อถือที่ใช้ตรวจสอบอีกฝ่าย |
cert | แสดงใบรับรองไคลเอนต์พร้อมคีย์ส่วนตัว เมื่อต้องการการพิสูจน์ตัวตนของไคลเอนต์ |
สำหรับ CA สำหรับดักจับที่ได้รับอนุมัติ การดำเนินการของ Requests สามารถเลือกชุด CA ที่ต้องการได้:
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)ที่นี่ routes คือการแมปพร็อกซีที่มีอยู่ของแอปพลิเคชัน เส้นทางต้องระบุชุดความน่าเชื่อถือที่ถูกต้องและอ่านได้สำหรับไคลเอนต์นี้ ไม่ใช่ใบรับรองเว็บไซต์ที่ดาวน์โหลดมาแล้วเลือกเพียงเพราะการเชื่อมต่อล้มเหลว
ตัวแปรสภาพแวดล้อม REQUESTS_CA_BUNDLE เป็นแหล่งความน่าเชื่อถืออีกแหล่งที่รองรับ ตรวจสอบเส้นทางการส่งจริงหากดูเหมือนไม่มีผล เวิร์กโฟลว์คำขอที่เตรียมไว้ และการตั้งค่าที่ชัดเจนอาจเปลี่ยนวิธีที่ การกำหนดค่าสภาพแวดล้อมถูกรวมเข้าด้วยกัน
คุณไม่ควรต้องใช้คีย์ส่วนตัวของ CA
ใบรับรอง CA สาธารณะคือสิ่งที่ไคลเอนต์ต้องใช้เพื่อจดจำผู้ออกที่ได้รับอนุมัติ คีย์ส่วนตัวสำหรับลงนามเป็นความลับที่ทรงพลังของอีกฝ่าย ไม่ควรแจกจ่ายให้ผู้ใช้แอปพลิเคชันเป็นส่วนหนึ่งของการซ่อมแซมความน่าเชื่อถือพร็อกซีตามปกติ
ใบรับรองไคลเอนต์อาจยังคงถูกเรียกจากปลายทางเฉพาะหรือความสัมพันธ์ TLS อื่นที่กำหนดค่าแยกต่างหาก นั่นเป็นข้อกำหนดแยกต่างหาก ไม่ใช่สิ่งที่อนุมานจากข้อผิดพลาดในการตรวจสอบใบรับรองทุกครั้ง
เมื่อข้อผิดพลาดถัดไปปรากฏขึ้น ให้ระบุการดำเนินการ: โหลดไฟล์ CA ตรวจสอบใบรับรองอีกฝ่าย หรือแสดงตัวตนไคลเอนต์ การย้ายไฟล์ระหว่าง verify และ cert จนกว่าข้อความจะเปลี่ยนไม่ใช่วิธีที่เชื่อถือได้ในการเลือกบทบาทของไฟล์