ssl – SSL/TLS 模块

该模块实现了相应 CPython 模块的 一个子集,如下所述。有关更多信息,请参阅原始 CPython 文档: ssl.

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

职能

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

获取一个sock(通常是 socket.socket类型的实例),并返回一个 ssl.SSLSocket 的实例,它将底层流包装在 SSL 上下文中。返回的对象具有常用的接口方法,如 、等。应该从非 SSL 侦听服务器套接字返回的普通套接字创建服务器端 SSL 套接字。 stream SOCK_STREAMstream read(), write()accept()

  • do_handshake确定握手是作为 的一部分完成wrap_socket 还是延迟作为初始读取或写入的一部分完成(没有do_handshakeCPython 中的方法)。对于阻塞套接字,立即进行握手是标准的。对于非阻塞套接字(即当传入的sock wrap_socket 处于非阻塞模式时)握手通常应该被推迟,因为否则会wrap_socket阻塞直到它完成。请注意,在 AXTLS 中,握手可以推迟到第一次读取或写入,但它会阻塞直到完成。

根据特定MicroPython 端口中的底层模块实现, 可能不支持上述部分或全部关键字参数。

警告

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

CPython中的wrap_socket 返回一个SSLSocket具有典型的插座的方法,如对象send, recv等MicroPython的 wrap_socket返回一个对象,更类似于CPython中的SSLObject不具有这些插座的方法。

例外

ssl.SSLError

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

常数

ssl.CERT_NONE
ssl.CERT_OPTIONAL
ssl.CERT_REQUIRED

cert_reqs参数支持的值。