Я только что провел несколько тестов, и перечисление вашего выбора СА в параметрах ca_certs
- это именно то, что вам нужно.
Система, на которой я пробовал это Linux с Python 2.6.Если вы не используете ca_certs
, это не позволяет вам использовать cert_reqs=ssl.CERT_REQUIRED
:
Traceback (most recent call last):
File "sockettest.py", line 18, in <module>
cert_reqs=ssl.CERT_REQUIRED, ssl_version=ssl.PROTOCOL_TLSv1)
File "/usr/lib/python2.6/ssl.py", line 350, in wrap_socket
suppress_ragged_eofs=suppress_ragged_eofs)
File "/usr/lib/python2.6/ssl.py", line 113, in __init__
cert_reqs, ssl_version, ca_certs)
ssl.SSLError: _ssl.c:317: No root certificates specified for verification of other-side certificates.
Я также пытался использовать клиент для отправки сертификата, который не был получен от ЦС вca_certs
, и я получаю ssl_error_unknown_ca_alert
(как и ожидалось).
Обратите внимание, что в любом случае отправка списка CA сертификатов клиентов не производится (в списке certificate_authorities
в сообщении CertificateRequest
TLS), но это не требуется.Полезно только помочь клиенту выбрать сертификат.