Я пытаюсь использовать сокеты python, чтобы сделать запрос расширенного Provisioning Protocol (EPP) регистратору домена, который принимает только запросы по ssl.Python Sockets SSL: проверка сертификата не выполнена
файл сертификата: www.myDomain.se.crt Key File: mydomain.pem
openssl s_client -connect epptestv3.iis.se:700 -cert www.myDomain.se.crt -key mydomain.pem
Когда я пытаюсь сделать запрос с помощью клиента OpenSSL я успешно получить приветствие ответ от регистратора, но когда я использую следующий код в python я получаю ошибку сертификата ssl.
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(15)
sock.connect(('epptestv3.iis.se', 700))
sock.settimeout(60) # regular timeout
ssl_keyfile='myDomain.pem'
ssl_certfile='www.myDomain.se.crt'
ssl_ciphers='AES256-GCM-SHA384'
ssl_version=ssl.PROTOCOL_TLSv1_2
sock = ssl.wrap_socket(sock,
ssl_keyfile,
ssl_certfile,
ssl_version=ssl_version,
ciphers=ssl_ciphers,
server_side=False,
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=None
)
После выполнения сценария я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "server_connect.py", line 54, in <module>
ca_certs=ssl_keyfile
File "/usr/lib/python2.7/ssl.py", line 933, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 601, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 830, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
Любая идея, что случилось здесь?
Фактически я пробовал, предоставляя 'ca_certs' тоже, но это не помогает. –
@OsamaRasheed: это зависит от того, какое содержимое файла вы указали с помощью 'ca_certs'. В вашем случае вам, вероятно, понадобится [этот сертификат] (https://www.tbs-certificates.co.uk/FAQ/en/357.html) в файле. –