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_STREAM
stream
read()
,write()
accept()
do_handshake确定握手是作为 的一部分完成
wrap_socket
还是延迟作为初始读取或写入的一部分完成(没有do_handshake
CPython 中的方法)。对于阻塞套接字,立即进行握手是标准的。对于非阻塞套接字(即当传入的sockwrap_socket
处于非阻塞模式时)握手通常应该被推迟,因为否则会wrap_socket
阻塞直到它完成。请注意,在 AXTLS 中,握手可以推迟到第一次读取或写入,但它会阻塞直到完成。
根据特定MicroPython 端口中的底层模块实现, 可能不支持上述部分或全部关键字参数。
警告
ssl
模块的某些实现不验证服务器证书,这使得建立的 SSL 连接容易受到中间人攻击。
CPython中的wrap_socket
返回一个SSLSocket
具有典型的插座的方法,如对象send
, recv
等MicroPython的 wrap_socket
返回一个对象,更类似于CPython中的SSLObject
不具有这些插座的方法。