2016-09-06 22 views
17

Właśnie zainstalowałem Python3 z python.org i mam problem z instalacją pakietów z pip. Z założenia w sieci znajduje się urządzenie do inspekcji pakietów typu "człowiek w środku", które sprawdza wszystkie pakiety (włącznie z ssl), rezygnując z wszystkich połączeń ssl za pomocą własnego certyfikatu. Część obiektu GPO przesyła niestandardowy certyfikat główny do magazynu kluczy systemu Windows.Jak dodać niestandardowy certyfikat główny urzędu certyfikacji do magazynu urzędu certyfikacji używanego przez Python w systemie Windows?

Podczas korzystania z Java, jeśli potrzebuję uzyskać dostęp do zewnętrznych stron https, muszę ręcznie zaktualizować cacerts w JVM, aby zaufać samemu sobie certyfikatu CA.

Jak to zrobić dla Pythona? Teraz, kiedy próbuję zainstalować pakiety przy użyciu pip, zrozumiałe, otrzymuję wspaniałe błędy [SSL: CERTIFICATE_VERIFY_FAILED].

Rozumiem, że mogę zignorować je przy użyciu parametru --trusted-host, ale nie chcę tego robić dla każdego pakietu, który próbuję zainstalować.

Czy istnieje sposób na aktualizację magazynu certyfikatów urzędu certyfikacji używanego przez Pythona?

+0

Możliwy duplikat [instalacji pip nie powiedzie się z błędem połączenia: \ [SSL: CERTIFICATE \ _VERIFY \ _FAILED \] certyfikat nie powiódł się (\ _ssl.c: 598) "] (http://stackoverflow.com/questions/ 25981703/pip-install-fail-with-connection-error-ssl-certificate-verify-failed-certi) – rfkortekaas

+0

@rfkortekaas podobny yes. Nie zgadzam się z tym, że jest to duplikat, ponieważ post, do którego się odwołujesz, pyta, co zrobić, aby rozwiązać problem, a wszystkie proponowane rozwiązania wymagają ręcznego dostarczania argumentów do każdego połączenia. Szczególnie pytam, jak uniknąć tych konkretnych rozwiązań, używając magazynu zaufanych certyfikatów, którego używa pyton w systemie Windows. –

+0

Spójrz na odpowiedź kenorb, która opisuje wszystkie możliwe opcje, w tym użycie magazynu kluczy globalnych. – rfkortekaas

Odpowiedz

7

Uruchom: python -c "import ssl; print(ssl.get_default_verify_paths())", aby sprawdzić bieżące ścieżki używane do weryfikacji certyfikatu. Dodaj certyfikat główny swojej firmy do jednego z nich.

Ścieżka openssl_capath_env wskazuje na zmienną środowiskową: SSL_CERT_DIR.

Jeśli SSL_CERT_DIR nie istnieje, należy go utworzyć i wskazać prawidłowy folder w systemie plików. Następnie możesz dodać certyfikat do tego folderu, aby go użyć.

+5

w moim systemie Windows zwraca "/ usr/local/ssl/certs", który nie jest dostępny w systemie Windows. –

+0

W końcu udało mi się to zrobić również po tym, jak zostałam pociągnięta do innego projektu, i podobnie do @ColinTalbert wskazuje na nieistniejący folder '/ usr/local/ssl/certs'. –

+0

Zmieniliśmy moje pytanie i mam nadzieję, że rozwiąże to sprawę. – rfkortekaas