基于python库ssl的tcp加密通信

 基本tcp长连接通信,代码如下,server端代码:

# server
import socket
s = socket.socket(socket.AF_INET)
s.bind(('0.0.0.0', 8080))
s.listen(4)  #可等待被accept的连接个数
con, addr = s.accept()
con.recv(1024)

 client端代码:

# client
import socket
s = socket.socket(socket.AF_INET)
s.connect(('xx.xx.xx.xx', 8080))
s.send('haha')

 ssl库提供了很好的封闭,隐藏了加密细节,上层使用无感知,获取一个地址的公开密钥证书如下:

import ssl
ssl.get_server_certificate(('www.hustyx.com', 443), ssl.PROTOCOL_SSLv23)

 加密通信server端代码如下:

# server
import ssl, socket
s = socket.socket(socket.AF_INET)
s.bind(('0.0.0.0', 8080))
s.listen(4)
con, addr = s.accept()
sslcon = ssl.wrap_socket(con, keyfile='/tmp/xxx.key', certfile='/tmp/xxx.pem', server_side=True, ssl_version=ssl.PROTOCOL_SSLv23)
sslcon.send('haha')

 加密通信client端代码如下:

# client
import ssl, socket
s = socket.socket(socket.AF_INET)
sslcon = ssl.wrap_socket(s, ca_certs='/tmp/xxx.pem', ssl_version=ssl.PROTOCOL_SSLv23)
sslcon.connect(('xx.xx.xx.xx', 8080))
sslcon.recv()

 

发表于 2018年01月17日 16:41   评论:0   阅读:4724  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo