Nếu sử dụng mô-đun ssl
Python [e. g. như là một phần của việc tạo kết nối tới //
URL], Python trong cấu hình mặc định của nó sẽ muốn lấy danh sách X đáng tin cậy. 509 / Chứng chỉ SSL để xác minh kết nối
Nếu không tìm thấy danh sách các chứng chỉ đáng tin cậy, bạn có thể gặp phải các lỗi như ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
Cách Python tìm kiếm chứng chỉ¶
Theo mặc định, Python có thể sẽ gọi ssl.SSLContext.load_default_certs[]
để tải các chứng chỉ mặc định
Trên Windows, Python tự động tải chứng chỉ từ kho chứng chỉ Windows. Điều này chỉ nên hoạt động với PyOxidizer
Trên tất cả các nền tảng, Python cố tải chứng chỉ từ các vị trí mặc định được biên dịch vào thư viện OpenSSL đang được sử dụng. Với PyOxidizer, thư viện OpenSSL [hoặc LibreSSL] là một phần của bản phân phối Python được sử dụng để tạo tệp nhị phân
Thư viện OpenSSL mã cứng đường dẫn tìm kiếm chứng chỉ mặc định. Đối với các bản phân phối Python của PyOxidizer, các đường dẫn là
[Windows]
C:\Program Files\Common Files\SSL\cert.pem
[tệp] vàdef make_exe[]: dist = default_python_distribution[] exe = dist.to_python_executable[name="myapp"] # Check for newer versions at //pypi.org/project/certifi/. exe.add_python_resources[exe.pip_install[["certifi==2020.12.5"]]] return exe
0 [thư mục][không phải Windows]
def make_exe[]: dist = default_python_distribution[] exe = dist.to_python_executable[name="myapp"] # Check for newer versions at //pypi.org/project/certifi/. exe.add_python_resources[exe.pip_install[["certifi==2020.12.5"]]] return exe
1 [tệp] vàdef make_exe[]: dist = default_python_distribution[] exe = dist.to_python_executable[name="myapp"] # Check for newer versions at //pypi.org/project/certifi/. exe.add_python_resources[exe.pip_install[["certifi==2020.12.5"]]] return exe
2 [thư mục]
Ngoài ra, OpenSSL [chứ không phải LibreSSL] sẽ tìm các biến môi trường
def make_exe[]: dist = default_python_distribution[] exe = dist.to_python_executable[name="myapp"] # Check for newer versions at //pypi.org/project/certifi/. exe.add_python_resources[exe.pip_install[["certifi==2020.12.5"]]] return exe3 và
def make_exe[]: dist = default_python_distribution[] exe = dist.to_python_executable[name="myapp"] # Check for newer versions at //pypi.org/project/certifi/. exe.add_python_resources[exe.pip_install[["certifi==2020.12.5"]]] return exe4 để tự động đặt tệp và thư mục CA tương ứng