У меня есть следующий простой скрипт Python:
import socket
import ssl
if __name__ == "__main__":
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind("", 443)
s.listen(1)
(conn, addr) = s.accept()
sslconn = ssl.wrap_socket(conn, server_side=True, certfile="server.crt", keyfile="server.key", cert_reqs=ssl.CERT_NONE)
print 'Connection established'
while True:
data = sslconn.recv(1024)
if not data: break
print "Data received"
sslconn.close()
Файлы server.crt
и server.key
определяют открытый и закрытый ключ самозаверяющего сертификата.Если я подключаюсь к хосту, на котором выполняется этот сценарий, например, с помощью Firefox, сценарий завершается с
ssl.SSLError: [Errno 1] _ssl.c:503: sslv3 alert certificate unknown
. Насколько я понимаю, это происходит от клиента (скажем, Firefox), который предупреждает хост о том, что сертификатнедействительным.Это хорошо, но почему это приводит к завершению сценария?Должен ли я как-то явно игнорировать предупреждение?