ussl – SSL/TLS module

This module implements a subset of the corresponding CPython module, as described below. For more information, refer to the original CPython documentation: ssl.

此模块提供对传输层安全性的访问(以前被广泛称为“Secure Sockets Layer安全套接字层”)加密和对等身份验证 客户端和服务器端网络套接字的功能。

功能

ussl.wrap_socket(sock, server_side=False, keyfile=None, certfile=None, cert_reqs=CERT_NONE, ca_certs=None, do_handshake=True)

接收流 *sock*(通常是 SOCK_STREAM 类型的usocket.socket实例), 并返回ssl.SSLSocket的实例,该实例将底层流包装在SSL上下文中。 返回的对象具有通常的流接口方法,如 read() , write() ,等等。 特别地,应该从非SSL侦听服务器套接字上的 accept() 返回的普通套接字创建服务器端SSL套接字。

  • do_handshake 确定握手是作为 wrap_socket 的一部分完成还是延迟作为初始读取或写入的一部分完成

(没有 CPython 中的 do_handshake 方法)。

对于阻塞套接字,立即进行握手是标准的。对于非阻塞套接字(即当 sock 传入 wrap_socket 处于非阻塞模式时) 握手通常应该推迟,否则 wrap_socket 阻塞直到它完成。 请注意,在 AXTLS 中,握手可以推迟到第一次读取或写入,但它会阻塞直到完成。

根据特定 MicroPython port 中的底层模块实现,可能不支持上面的某些或所有关键字参数。

警告

ssl 模块的一些实现不验证服务器证书,这使得建立的ssl连接容易受到中间人攻击。

CPython 的 wrap_socket 返回一个 SSLSocket 对象,该对象具有典型的套接字方法,例如 sendrecv 等。 MicroPython 的 wrap_socket 返回一个更类似于 CPython 的对象没有这些套接字方法的 SSLObject

异常

ssl.SSLError

此异常不存在。而是使用它的基类OSError。

常数

ssl.CERT_NONE
ssl.CERT_OPTIONAL
ssl.CERT_REQUIRED

cert_reqs 参数的支持值。