From 2fb1ef7f604f12b9f3c5c87a5156ae0e162fbe4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaxsen=20Xu=28=E8=AE=B8=E6=B6=A6=E6=9D=B0=29?= Date: Wed, 12 Apr 2023 11:38:57 +0800 Subject: [PATCH] update ussl --- .../ussl.md" | 74 ++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git "a/docs/API_reference/zh/QuecPython\347\273\204\344\273\266\345\272\223/ussl.md" "b/docs/API_reference/zh/QuecPython\347\273\204\344\273\266\345\272\223/ussl.md" index 5a5774cb..e18f8d16 100644 --- "a/docs/API_reference/zh/QuecPython\347\273\204\344\273\266\345\272\223/ussl.md" +++ "b/docs/API_reference/zh/QuecPython\347\273\204\344\273\266\345\272\223/ussl.md" @@ -1,9 +1,81 @@ # ussl - SSL加密通信 -ussl模块实现了TLS/SSL加密通信功能。 +ussl模块实现了TLS/SSL加密通信功能, 主要用于单向和双向认证使用。 > BC25PA平台不支持ussl模块。 + + +## 创建SSL连接通道 + +### `ussl.wrap_socket` + +```python +ussl.wrap_socket(sock,server_hostname=None,cert=None,key=None) +``` + +**参数描述:** + +- `sock` - usocket.socket对象, 必须参数,要包装的套接字(usocket.socket)对象 +- `server_hostname` - 字符串类型, 可选参数, 服务器IP地址 + +- `cert` - 字符串类型, 可选参数, 数字证书数据 + +- `key` - 字符串类型, 可选参数, 私钥数据 + +**返回值描述:** + +返回一个被包装的`usocket.socket`对象, 并且具有`usocket.socket`所有方法及功能 + +**示例:** + +```python +import usocket +# 这里TLS举例 + +# 1. 单向认证说明 +# 创建一个socket实例 +sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) +# 解析域名 +sockaddr=usocket.getaddrinfo('www.tongxinmao.com', 80)[0][-1] +# 建立连接 +sock.connect(sockaddr) +# 简历SSL连接. 前提需要服务器支持 +sock = ussl.wrap_socket(sock, server_hostname=sockaddr[0]) +# 向服务端发送消息 +ret=sock.send('GET /News HTTP/1.1\r\nHost: www.tongxinmao.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n') +socket_log.info('send %d bytes' % ret) +# 接收服务端消息 +data=sock.recv(256) +socket_log.info('recv %s bytes:' % len(data)) +socket_log.info(data.decode()) + + +# 1. 双向认证说明 +cert = "数据证书" +key = "私钥" +# 创建一个socket实例 +sock = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) +# 解析域名 +sockaddr=usocket.getaddrinfo('www.tongxinmao.com', 80)[0][-1] +# 建立连接 +sock.connect(sockaddr) +# 简历SSL连接. 前提需要服务器支持 +sock = ussl.wrap_socket(sock, server_hostname=sockaddr[0], cert=cert, key=key) +# 向服务端发送消息 +ret=sock.send('GET /News HTTP/1.1\r\nHost: www.tongxinmao.com\r\nAccept-Encoding: deflate\r\nConnection: keep-alive\r\n\r\n') +socket_log.info('send %d bytes' % ret) +# 接收服务端消息 +data=sock.recv(256) +socket_log.info('recv %s bytes:' % len(data)) +socket_log.info(data.decode()) + +``` + + + + + ## ssl加密算法套件支持 -- Gitee