我正在编写一个小型SSL代理服务器,并不断从android应用程序客户端而不是浏览器获取ssl.SSLError: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:661)
。我确实设置了ssl.CERT_NONE
。这是我的测试代码:
SSLcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
SSLcontext.load_cert_chain('server.crt', 'server.key')
SSLcontext.verify_mode = ssl.CERT_NONE
SSLcontext.check_hostname = False
s = socket.socket()
s.bind(('127.0.0.1', 443))
s.listen(5)
c = s.accept()[0]
c = SSLcontext.wrap_socket(c, server_side = True)
print c.recv(1024)
这是因为证书固定在安卓应用程序上还是我做错了什么?
我确实设置了ssl。CERT_NONE
这根本不会影响客户端验证服务器证书的方式。服务器无法指示客户端不验证证书,如果服务器可以这样做,这将是一个严重的安全问题。
SSLV3_ALERT_CERTIFICATE_UNKNOWN。。。来自android应用程序客户端,但不是浏览器。
不知道您在这里使用的是哪种证书。如果这是一个自签名的应用程序,你可能已经将其作为受信任的应用程序添加到浏览器中,或者添加了一个明确的异常,但你没有为Android应用程序这样做。如果这是一个由公共CA颁发的证书,那么您可能缺少链证书。桌面浏览器通常可以解决服务器端的问题,而大多数其他客户端则不能。