Python Requests: các gói CA thuộc về verify, không phải cert
Đặt tài liệu tin cậy CA đã được phê duyệt vào cấu hình xác minh thay vì coi lỗi chứng chỉ là yêu cầu khóa riêng của máy khách.
Một đồng nghiệp đưa cho bạn chứng chỉ CA của tổ chức. Requests cung cấp một tham số tên là cert. Các tên có vẻ khớp nhau, nhưng chúng trả lời những câu hỏi khác nhau.
| Cài đặt | Mục đích |
|---|---|
verify | Chọn tài liệu tin cậy dùng để xác minh bên kia |
cert | Trình bày chứng chỉ máy khách, cùng khóa riêng của nó, khi cần xác thực máy khách |
Đối với CA chặn được phê duyệt, một thao tác Requests có thể chọn gói CA dự định:
response = requests.get(
'https://example.com/',
proxies=routes,
verify='/path/to/approved-ca-bundle.pem',
timeout=15,
)Ở đây routes là ánh xạ proxy hiện có của ứng dụng. Đường dẫn phải chỉ ra gói tin cậy đúng và đọc được cho máy khách này. Đó không phải là chứng chỉ trang web đã tải xuống được chọn chỉ vì kết nối thất bại.
Biến môi trường REQUESTS_CA_BUNDLE là một đầu vào tin cậy được hỗ trợ khác. Kiểm tra đường gửi thực tế nếu nó có vẻ không hiệu quả; quy trình yêu cầu đã chuẩn bị và cài đặt rõ ràng có thể thay đổi cách cấu hình môi trường được hợp nhất.
Bạn không nên cần khóa riêng của CA
Chứng chỉ CA công khai là thứ máy khách cần để nhận ra một nhà phát hành được phê duyệt. Khóa riêng ký của nó là một bí mật mạnh mẽ của bên khác. Không nên phân phối nó cho người dùng ứng dụng như một phần của việc sửa chữa tin cậy proxy thường lệ.
Chứng chỉ máy khách vẫn có thể được yêu cầu bởi một đích cụ thể hoặc bởi một mối quan hệ TLS khác được cấu hình riêng. Đó là yêu cầu riêng, không phải điều gì đó suy ra từ mọi lỗi xác minh chứng chỉ.
Khi lỗi tiếp theo xuất hiện, hãy gọi tên thao tác: tải tệp CA, xác minh chứng chỉ bên kia hoặc trình bày danh tính máy khách. Di chuyển một tệp giữa verify và cert cho đến khi thông báo thay đổi không phải là cách đáng tin cậy để chọn vai trò của nó.