:mod:`ussl` -- SSL/TLS module ============================= .. module:: ussl :概要:套接字对象的 TLS/SSL 包装器 |see_cpython_module| :mod:`python:ssl`. 此模块提供对传输层安全性的访问(以前被广泛称为“Secure Sockets Layer安全套接字层”)加密和对等身份验证 客户端和服务器端网络套接字的功能。 功能 --------- .. function:: 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 中,握手可以推迟到第一次读取或写入,但它会阻塞直到完成。 根据特定 :term:`MicroPython port` 中的底层模块实现,可能不支持上面的某些或所有关键字参数。 .. warning:: ``ssl`` 模块的一些实现不验证服务器证书,这使得建立的ssl连接容易受到中间人攻击。 CPython 的 ``wrap_socket`` 返回一个 ``SSLSocket`` 对象,该对象具有典型的套接字方法,例如 ``send``、``recv`` 等。 MicroPython 的 ``wrap_socket`` 返回一个更类似于 CPython 的对象没有这些套接字方法的 ``SSLObject``。 异常 ---------- .. data:: ssl.SSLError 此异常不存在。而是使用它的基类OSError。 常数 --------- .. data:: ssl.CERT_NONE ssl.CERT_OPTIONAL ssl.CERT_REQUIRED *cert_reqs* 参数的支持值。