PySide6.QtNetwork.QSslServer

class QSslServer

实现了一个基于TLS的加密、安全的TCP服务器。更多

PySide6.QtNetwork.QSslServer 的继承图

在版本6.4中添加。

概要

方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

用于替代QTcpServer的类,以使用传输层安全性(TLS)实现TCP服务器。

要配置安全握手设置,请在QSslConfiguration对象上使用适用的setter函数,然后将其作为参数传递给setSslConfiguration()函数。所有后续处理的传入连接都将使用这些设置。

要开始监听传入的连接,请使用从QTcpServer继承的listen()函数。其他设置可以通过使用从QTcpServer类继承的设置函数来配置。

连接到这个类的信号以响应传入的连接尝试。它们与QSslSocket上的信号相同,但还会传递一个指向相关套接字的指针。

当响应pendingConnectionAvailable()信号时,使用nextPendingConnection()函数获取下一个传入连接并将其从待处理连接队列中移除。QSslSocketQSslServer的子对象,当QSslServer被删除时,它也会被删除。为了避免浪费内存,在使用完对象后显式销毁它仍然是一个好主意。

__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent构造一个新的QSslServer

alertReceived(socket, level, type, description)
Parameters:

QSslServer 如果从对等方接收到警报消息,则会发出此信号。level 告诉警报是致命的还是警告。type 是解释为什么发送警报的代码。当警报消息的文本描述可用时,它会在 description 中提供。

注意

该信号主要用于信息和调试目的,不需要在应用程序中进行任何处理。如果警报是致命的,底层后端将处理它并关闭连接。

注意

并非所有后端都支持此功能。

alertSent(socket, level, type, description)
Parameters:

QSslServer 如果从 socket 向对等方发送了警报消息,则会发出此信号。level 描述了它是警告还是致命错误。type 提供了警报消息的代码。当警报消息的文本描述可用时,它会在 description 中提供。

注意

此信号主要是信息性的,可用于调试目的,通常不需要应用程序采取任何操作。

注意

并非所有后端都支持此功能。

errorOccurred(socket, error)
Parameters:

此信号在握手过程中发生错误后发出。socketError 参数描述了发生的错误类型。

如果在此信号发出后,socket 的握手尚未达到加密状态,则 socket 会自动删除。但如果 socket 成功加密,它将被插入到 QSslServer 的待处理连接队列中。当用户调用了 nextPendingConnection() 后,用户有责任销毁 socket,否则 socket 将不会被销毁,直到 QSslServer 对象被销毁。如果在 socket 插入待处理连接队列后发生错误,此信号将不会发出,并且 socket 不会被移除或销毁。

注意

连接到这个信号时不能使用Qt::QueuedConnection,否则在信号处理时socket可能已经被销毁。

另请参阅

error() errorString()

handshakeInterruptedOnError(socket, error)
Parameters:

QSslServer 如果 socket 发现证书验证错误,并且如果在 QSslConfiguration 中启用了早期错误报告,则会发出此信号。应用程序应检查 error 并决定是否要继续握手,或中止握手并向对等方发送警报消息。信号-槽连接必须是直接的。

handshakeTimeout()
Return type:

整数

返回当前配置的握手超时时间。

另请参阅

setHandshakeTimeout()

peerVerifyError(socket, error)
Parameters:

QSslServer 可以在SSL握手期间多次发出此信号,在加密建立之前,表示在建立对等方身份时发生了错误。error 通常表示 socket 无法安全地识别对等方。

此信号在出现问题时为您提供早期指示。通过连接到此信号,您可以在握手完成之前手动选择从连接的槽中拆除连接。如果不采取任何行动,QSslServer 将继续发出 sslErrors()

另请参阅

sslErrors()

preSharedKeyAuthenticationRequired(socket, authenticator)
Parameters:

QSslServersocket 协商 PSK 加密套件时发出此信号,因此需要 PSK 认证。

使用PSK时,服务器必须提供有效的身份和有效的预共享密钥,以便SSL握手继续进行。应用程序可以通过根据其需求填充传递的authenticator对象,在连接到该信号的槽中提供此信息。

注意

忽略此信号,或未能提供所需的凭据,将导致握手失败,从而导致连接中止。

注意

authenticator 对象由 socket 拥有,应用程序不得删除它。

setHandshakeTimeout(timeout)
Parameters:

timeout – int

设置用于所有传入握手的timeout,单位为毫秒。

这在客户端(无论是恶意还是意外)连接到服务器但不尝试通信或发起握手的场景中是相关的。QSslServer 将在 timeout 毫秒后自动结束连接。

默认情况下,超时时间为5000毫秒(5秒)。

注意

底层的TLS框架可能现在或将来会有自己的超时逻辑,此函数不会影响这一点。

注意

传递给此函数的timeout仅适用于连接。如果客户端已经连接,它将使用连接时设置的超时时间。

另请参阅

handshakeTimeout()

setSslConfiguration(sslConfiguration)
Parameters:

sslConfigurationQSslConfiguration

设置用于所有后续传入连接的sslConfiguration

这必须在listen()之前调用,以确保在所有握手过程中使用了所需的配置。

sslConfiguration()
Return type:

QSslConfiguration

返回当前的SSL配置。

另请参阅

setSslConfiguration()

sslErrors(socket, errors)
Parameters:
  • socketQSslSocket

  • errors – QSslError 的列表

QSslServer 在SSL握手后发出此信号,表示在建立对等方身份时发生了一个或多个错误。这些错误通常表明 socket 无法安全地识别对等方。除非采取任何措施,否则在发出此信号后,连接将被断开。

如果你想在发生错误的情况下继续连接,你必须从连接到这个信号的插槽内部调用ignoreSslErrors()。如果你需要在稍后访问错误列表,你可以调用sslHandshakeErrors()。

errors 包含一个或多个错误,这些错误阻止了 QSslSocket 验证对等方的身份。

注意

连接到这个信号时不能使用Qt::QueuedConnection,否则调用ignoreSslErrors()将无效。

另请参阅

peerVerifyError()

startedEncryptionHandshake(socket)
Parameters:

socketQSslSocket

当客户端连接到socket并启动TLS握手时,会发出此信号。