Python中使用ssl加密
来源:互联网 发布:绘制网络计划图软件 编辑:程序博客网 时间:2024/05/17 23:10
使用ssl加密传输数据
- 首先需要使用openssl产生证书
openssl req -new -x509 -days 365 -nodes -out mycertfile.pem -keyout mykeyfile.pem
命令执行后,会在当前目录下产生两个文件。其中, mycertfile.pem可以发给一家发证机构, 它将验证您输入的凭据的真实性,
并对申请进行签名, 再把证书返还。 第二个文件的名字将是mykeyfile.pem,它包含了证书的私钥,应被全力保护;
如果它落入别人手中,则可以被用来伪造服务器。
2. 修改echoserver和echoclient支持ssl加密
把mykeyfile.pem, mycertfile.pem拷贝到服务端,和echoserver.py同一目录下
# Echo server programimport socket, sslHOST = '' # Symbolic name meaning all available interfacesPORT = 9980 # Arbitrary non-privileged portcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)context.load_cert_chain(certfile="mycertfile.pem", keyfile="mykeyfile.pem")s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind((HOST, PORT))s.listen(1)while True: conn, addr = s.accept() print('Connected by', addr) ssl_conn = context.wrap_socket(conn, server_side=True) while True: data = ssl_conn.recv(1024) print("recv data: ", repr(data)) if not data: break ssl_conn.sendall(data) ssl_conn.close()
把mycertfile.pem拷贝到客户端,下面是客户端代码:
# Echo client programimport socket, sslimport timeHOST = 'proxy.server.com' # The remote hostPORT = 80 # The same port as used by the servers = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((HOST, PORT))proxy_data = 'CONNECT %s:%s HTTP/1.0\n\n' % ('106.106.106.71', '9980')s.sendall(proxy_data.encode())data = s.recv(1024)print('connect result: ', repr(data))ssl_conn = ssl.wrap_socket(s, ca_certs="./mycertfile.pem", cert_reqs=ssl.CERT_REQUIRED)while True: ssl_conn.sendall(b'hello world') data = ssl_conn.recv(1024) print('Received', repr(data)) time.sleep(2)ssl_conn.close()
0 0
- Python中使用ssl加密
- 在ZeroMQ中使用SSL加密
- 在ZeroMQ中使用SSL加密
- 在SQL Server 2005 中使用SSL加密通道
- QT中SOCKET加密SSL
- 使用SSL加密连接MySQL
- Python中使用hashlib库进行加密
- 服务器强制使用强加密的SSL
- 配置 OpenLDAP 使用 SSL/TLS 加密数据通信
- ActiveMQ中使用SSL
- ssl加密
- SSL加密
- python中加密解密
- windows中使用Python进行AES加密解密-加密解密功能实现
- windows中使用Python进行AES加密解密-文本文件加密工具
- androd中使用 https ssl
- 在WinHTTP中使用SSL
- tomcat中使用SSL连接
- MFC ADO链接SQL Server 2008 封装好的类
- SSh save可以自动自动提交, 但是delete,update却不行
- 字符集设置问题深究
- 程序员讨厌没有价值的任务
- 能Ping通,能DNS解析,不能打开网页(登陆QQ等)的解决办法
- Python中使用ssl加密
- 题目1202 九度Online Judge
- leetcode 总结
- java Socket编程初学笔记
- hihocoder 1039 字符串处理
- cocos2d-android开发基础篇(一)下
- MSI安装包的修改经历
- Warning: $HADOOP_HOME is deprecated. hadoop
- Spring mvc详解