2016-09-06 51 views
17

Tôi vừa cài đặt Python3 từ python.org và gặp sự cố khi cài đặt gói với pip. Theo thiết kế, có một thiết bị kiểm tra gói tin trung gian trên mạng ở đây kiểm tra tất cả các gói (bao gồm ssl) bằng cách từ bỏ tất cả các kết nối ssl với chứng chỉ riêng của nó. Một phần của GPO đẩy chứng chỉ gốc tùy chỉnh vào Windows Keystore.Cách thêm chứng chỉ Gốc CA tùy chỉnh vào Cửa hàng CA được sử dụng bởi Python trong Windows?

Khi sử dụng Java, nếu tôi cần truy cập bất kỳ trang https bên ngoài nào, tôi cần phải cập nhật thủ công các dấu trang trong JVM để tin cậy chứng chỉ CA tự ký.

Làm cách nào để thực hiện điều đó cho python? Ngay bây giờ, khi tôi cố gắng cài đặt các gói bằng cách sử dụng pip, dễ hiểu, tôi nhận được lỗi tuyệt vời [SSL: CERTIFICATE_VERIFY_FAILED].

Tôi nhận ra mình có thể bỏ qua chúng bằng tham số --trusted-host, nhưng tôi không muốn làm điều đó cho mỗi gói tôi đang cố cài đặt.

Có cách nào để cập nhật kho lưu trữ chứng chỉ CA mà python sử dụng không?

+0

Có thể trùng lặp [cài đặt pip không thành công với "lỗi kết nối: \ [SSL: CERTIFICATE \ _VERIFY \ _FAILED \] chứng chỉ xác minh không thành công (\ _ssl.c: 598)"] (http://stackoverflow.com/questions/ 25981703/pip-install-fail-với-kết nối-lỗi-ssl-certificate-verify-fail-certi) – rfkortekaas

+0

@rfkortekaas tương tự có. Tôi không đồng ý nó là một bản sao như bài bạn tham khảo là yêu cầu phải làm gì để giải quyết vấn đề và tất cả các giải pháp được đề xuất liên quan đến việc cung cấp các đối số theo cách thủ công cho mỗi cuộc gọi. Tôi đặc biệt yêu cầu làm thế nào để tránh những giải pháp chính xác bằng cách sử dụng kho lưu trữ tin cậy mà python trong Windows sử dụng. –

+0

Nhìn vào câu trả lời của kenorb người mô tả tất cả các tùy chọn có thể bao gồm cả việc sử dụng kho khóa toàn cầu. – rfkortekaas

Trả lời

7

Chạy: python -c "import ssl; print(ssl.get_default_verify_paths())" để kiểm tra các đường dẫn hiện tại được sử dụng để xác minh chứng chỉ. Thêm chứng chỉ gốc của công ty bạn vào một trong số đó.

Đường dẫn openssl_capath_env trỏ đến biến môi trường: SSL_CERT_DIR.

Nếu SSL_CERT_DIR không tồn tại, bạn sẽ cần phải tạo và trỏ nó vào một thư mục hợp lệ trong hệ thống tệp của bạn. Sau đó, bạn có thể thêm chứng chỉ của mình vào thư mục này để sử dụng.

+5

trên hệ thống Windows của tôi, điều này trả về '/ usr/local/ssl/certs' không khả dụng trên Windows. –

+0

Cuối cùng tôi cũng đã làm việc này sau khi được kéo mạnh vào một dự án khác, và tương tự như @ColinTalbert nó trỏ đến một thư mục không tồn tại '/ usr/local/ssl/certs'. –

+0

Tôi đã chỉnh sửa câu hỏi của mình và hy vọng điều này sẽ giải quyết được vấn đề. – rfkortekaas

Các vấn đề liên quan