PYTHON SSL - 设置SSL连接的两种方式的区别
我正在尝试在我开发的客户端和服务器之间建立一个SSL连接。根据这个链接:http://bobthegnome.blogspot.fr/2007/08/making-ssl-connection-in-python.html,我创建了一个简单的连接,并且它能正常工作。但我想通过添加客户端认证来改进它。所以我发现有些人使用socket.warp_socket。
这里有一个例子:
bindsocket = socket.socket()
bindsocket.bind(('127.0.0.1', 9998))
bindsocket.listen(5)
while True:
newsocket, fromaddr = bindsocket.accept()
connstream = ssl.wrap_socket(newsocket,
server_side=True,
certfile="srv.crt",
keyfile="srv.key",
ssl_version=ssl.PROTOCOL_TLSv1)
deal_with_client(connstream)
这两者之间有什么区别?哪一个在我的情况下更好?
谢谢
1 个回答
2
这两者没有区别。
socket.ssl()
是一个已经不推荐使用的方法,它底层其实是调用了 socket.wrap_socket()
。这个方法只是检查一下你的 Python 是否支持 SSL(安全套接层),而这点无论如何都会通过 import ssl
来完成。
def ssl(sock, keyfile=None, certfile=None):
# we do an internal import here because the ssl
# module imports the socket module
import ssl as _realssl
warnings.warn("socket.ssl() is deprecated. Use ssl.wrap_socket() instead.",
DeprecationWarning, stacklevel=2)
return _realssl.sslwrap_simple(sock, keyfile, certfile)