Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “忽略”;“证书未知”;警觉的_Python_Openssl - Fatal编程技术网

Python “忽略”;“证书未知”;警觉的

Python “忽略”;“证书未知”;警觉的,python,openssl,Python,Openssl,我有以下简单的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, ce

我有以下简单的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)提醒主机证书无效。这很好,但是为什么它会导致脚本终止?我必须以某种方式明确忽略警报吗?

尝试捕获异常并忽略它。它应该是非致命的

sslconn = ssl.wrap_socket(conn, server_side=True, certfile="server.crt",
                          keyfile="server.key", cert_reqs=ssl.CERT_NONE,
                          do_handshake_on_connect=False)
try:
    sslconn.do_handshake()
except ssl.SSLError, err:
    if err.args[1].find("sslv3 alert") == -1:
        raise