W kodzie, dzwonisz:
sslcontext.load_cert_chain(cert, keyfile=ca_cert)
Z documentation:
Load a private key and the corresponding certificate. The certfile string must be the path to a single file in PEM format containing the certificate as well as any number of CA certificates needed to establish the certificate’s authenticity. The keyfile string, if present, must point to a file containing the private key in. Otherwise the private key will be taken from certfile as well. See the discussion of Certificates for more information on how the certificate is stored in the certfile.
Na podstawie nazwy argumentów w swojej przykład, wygląda na to jesteś przejazdem certyfikatu CA do argumentu keyfile
. Jest to niepoprawne, musisz podać klucz prywatny, który został użyty do wygenerowania lokalnego certyfikatu (w przeciwnym razie klient nie będzie mógł użyć twojego certyfikatu). Plik klucza prywatnego będzie wyglądać następująco:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,9BA4973008F0A0B36FBE1426C198DD1B
...data...
-----END RSA PRIVATE KEY-----
Trzeba tylko certyfikat CA jeśli próbują zweryfikować ważność certyfikatów SSL, które zostały podpisane przez tego certyfikatu. W takim przypadku prawdopodobnie użyjesz SSLContext.load_verify_locations()
do załadowania certyfikatu CA (chociaż ostatnio nie pracowałem z modułem SSL, więc nie wierz mi w tym punkcie).
Wspomniałeś, że kluczowy plik może nie być poprawny. Ładowanie certyfikatu nie powiedzie się, jeśli certyfikat (klucz publiczny) nie zostanie przesłany z odpowiednim plikiem klucza prywatnego. – Prabhu
Masz 'keyfile = ca_cert', co wydaje się być nieprawidłowe (lub wybrałeś okropne nazwy zmiennych). Czy twój 'ca_cert' naprawdę zawiera klucz prywatny? – larsks
@larsks Jak wybór strasznych nazw zmiennych może powodować błędy w kodzie? Wszelkie sugestie (lub konwencje) dotyczące ich nazwy? Plik ca_cert zaczyna się od '----- BEGIN CERTIFICATE -----', co wydaje się być prawidłowym zaszyfrowanym kluczem, a kończy się znakiem '----- END CERTIFICATE -----'. Czy nagłówek i stopka mówią coś innego? – sargas