Ich habe einen Python SSL-Server, der selbstsignierte Zertifikat-Dumps verwendet, sobald Firefox eine Verbindung herstellt. Ich beginne meine Server wie folgt:Python ssl server reporting TLSV1_ALERT_UNKNOWN_CA
httpd = BaseHTTPServer.HTTPServer(('', 443), MyHTTPHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='server.pem', server_side=True, cert_reqs=0)
httpd.serve_forever()
ich einen Fehler bekam, wenn ich Firefox Verbindung über:
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 51194)
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 655, in __init__
self.handle()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 310, in handle_one_request
self.raw_requestline = self.rfile.readline(65537)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 480, in readline
data = self._sock.recv(self._rbufsize)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 734, in recv
return self.read(buflen)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 621, in read
v = self._sslobj.read(len or 1024)
SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:1751)
----------------------------------------
ich dieses Verhalten nicht mit Chrome oder einen anderen Kunden sehen. Es passiert nur bei der ersten Verbindung (Beschwerden über das Zertifikat), bis ich das Zertifikat akzeptiere. Die Ausnahme bewirkt nicht, dass das Programm beendet wird.
Warum erhalte ich einen Fehler auf dem Server? Wie kann ich die Ausnahme vermeiden?
Könnte es sein, dass Firefox ein Client-Zertifikat sendet? –
Ich bin mir nicht sicher, aber mein Code sollte nicht nach dem Client-Zertifikat (cert_reqs = 0) suchen. Es scheint spezifisch für Firefox zu sein. (Ich fügte der Frage weitere Details hinzu). –
Beachten Sie, dass jetzt, da letsencrypt existiert, kein Grund mehr besteht, selbstsignierte Zertifikate zu verwenden. –