我想添加ssl支持到基於SocketServer.TCPServer類的現有TCP服務器。 所以我推翻了TCPSERVER類的默認構造函數,並添加ssl.wrap_socket(...) - 撥打:使用SocketServer.TCPServer通過SSL的TCP服務器
class MyTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True):
# See SocketServer.TCPServer.__init__
# (added ssl-support):
SocketServer.BaseServer.__init__(self, server_address,
RequestHandlerClass)
self.socket = ssl.wrap_socket(
socket.socket(self.address_family, self.socket_type),
server_side=True,
certfile='cert.pem'
)
if bind_and_activate:
self.server_bind()
self.server_activate()
當啓動服務器時,沒有錯誤occurrs。 所以我修改了簡單的測試,客戶端支持SSL,太:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = ssl.wrap_socket(s)
sock.connect(('192.168.1.1', 54321))
同樣沒有出現錯誤;但連接呼叫阻塞。當使用Ctrl + C關閉客戶端時,它顯示以下內容:
Traceback (most recent call last):
File "exampleClient.py", line 10, in <module>
sock.do_handshake()
File "/usr/lib/python2.6/ssl.py", line 293, in do_handshake
self._sslobj.do_handshake()
KeyboardInterrupt
因此,do_handshake在連接時被阻止。有誰知道如何解決這個問題?我只是想用一個加密的TCP連接:)
不算什麼,請把您的解決方案出了問題,並重新發布的回答爲你自己的問題。然後您可以接受它,並收到upvotes解決方案。 – 2011-05-17 10:08:16
也許你想嘗試使用標準的python ssl模塊:http://stackoverflow.com/questions/8582766/adding-ssl-support-to-socketserver/17501900#17501900 – 2013-07-06 10:18:08