- class QSslServer#
实现基于 TLS 的加密、安全 TCP 服务器。 更多…
自版本 6.4 新增。
摘要#
方法#
信号#
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建问题来解决。
详细描述#
使用此类代替
QTcpServer
以使用传输层安全性(TLS)实现 TCP 服务器。要配置安全握手设置,请使用
QSslConfiguration
对象的相应设置函数,然后将它用作setSslConfiguration()
函数的参数。所有后续的传入连接将使用这些设置处理。要开始监听传入的连接,请使用从
listen()
继承的函数。其他设置可以通过使用从QTcpServer
类继承的设置函数进行配置。通过连接此类的信号来响应用户尝试建立连接。它们与
QSslSocket
上的信号相同,但还会传递相关套接字的指针。在响应用户的
pendingConnectionAvailable()
信号时,请使用nextPendingConnection()
函数来获取下一个传入连接,并从挂起的连接队列中取出它。QSslSocket
是QSslServer
的子类,并在删除QSslServer
时被删除。尽管如此,在完成操作后,最好还是显式销毁对象,以避免内存浪费。使用给定的
parent
构造一个新的QSslServer
。- alertReceived(socket, level, type, description)#
- 参数:
socket -
QSslSocket
level -
AlertLevel
类型 –
AlertType
描述 – 字符串
QSslServer
当从对等体的socket
接收到警报消息时,会发出此信号。level
告诉警报是否是致命的或仅仅是警告。type
是解释为什么发送警报的代码。当警报消息的文本描述可用时,它在description
中提供。注意
此信号主要用于信息提取和调试,不需要在应用程序中进行任何处理。如果警报是致命的,底层后台将处理它并关闭连接。
- alertSent(socket, level, type, description)#
- 参数:
socket -
QSslSocket
level -
AlertLevel
类型 –
AlertType
描述 – 字符串
QSslServer
当从socket
发送警报消息到对等体时,会发出此信号。level
描述是否是警告或致命错误。type
给出了警报消息的代码。当警报消息的文本描述可用时,它在description
中提供。注意
此信号主要用于信息提取,也可用于调试目的,通常不需要应用程序采取任何操作。
- errorOccurred(socket, error)#
- 参数:
socket -
QSslSocket
error –
SocketError
在握手过程中发生错误时,会发出此信号。
socketError
参数描述了发生的错误类型。如果在发送信号前套接字的手动协商尚未达到加密状态,那么套接字将在该信号发出后自动删除。但如果套接字成功加密,它将被插入到
QSslServer
的待连接队列中。当用户调用nextPendingConnection()
时,销毁该套接字的职责是由用户承担的;如果不这样做,则该套接字将不会删除,直到QSslServer
对象被销毁。如果套接字在插入待连接队列后发生错误,则不会发出该信号,该套接字也不会被删除或销毁。- handshakeInterruptedOnError(socket, error)#
- 参数:
socket -
QSslSocket
错误 –
QSslError
QSslServer
在发现由套接字引发的证书验证错误,并且在QSslConfiguration
中启用了早期错误报告时发出此信号。应用程序应检查错误并决定是否要继续握手或取消握手并发送警报消息到对等方。信号-槽连接必须是直接的。- handshakeTimeout()#
- 返回类型:
int
返回当前配置的手动协商超时。
- peerVerifyError(socket, error)#
- 参数:
socket -
QSslSocket
错误 –
QSslError
QSslServer
在建立加密连接之前,在 SSL 握手过程中可以多次发出此信号,以指示在建立对等方身份时发生了错误。错误通常表明socket
无法安全地识别对等方。此信号可以在出现问题时提供早期指示。通过连接到此信号,您可以在握手完成之前,在连接槽内部手动选择断开连接。如果未采取任何操作,
QSslServer
将继续发出sslErrors()
信号。另见
- 参数:
socket -
QSslSocket
authenticator –
QSslPreSharedKeyAuthenticator
QSslServer
在socket
协商 PSK 加密套件时发出此信号,因此需要 PSK 身份验证。在使用 PSK 时,服务器必须提供有效的身份和一个有效的预共享密钥,以便 SSL 握手能继续进行。应用程序可以通过连接到此信号的槽来提供这些信息,根据需要填充传递的
authenticator
对象。注意
忽略此信号或未能提供所需的凭据将导致握手失败,因此连接将被中止。
- setHandshakeTimeout(timeout)#
- 参数:
timeout – int
将所有传入握手的超时设置为指定的
timeout
毫秒数。这在客户端(无论是恶意的还是偶然的)连接到服务器但未尝试进行通信或启动握手的情况下相关。当经过
timeout
毫秒后,QSslServer
将自动结束连接。默认超时为 5000 毫秒(5 秒)。
注意
底层的 TLS 框架现在或未来可能有自己的超时逻辑,此函数不影响该逻辑。
- setSslConfiguration(sslConfiguration)#
- 参数:
sslConfiguration –
QSslConfiguration
将该
sslConfiguration
设置为用于所有后续传入连接。必须在调用
listen()
之前调用此方法,以确保在所有握手过程中使用所需的配置。- sslConfiguration()#
- 返回类型:
返回当前ssl配置。
- sslErrors(socket, errors)#
- 参数:
socket -
QSslSocket
errors – .list of QSslError
QSslServer
在SSL握手后发出此信号,以指示在建立对等方的身份时发生了一个或多个错误。这些错误通常表明socket
无法安全地识别对等方。除非采取任何操作,否则在发出此信号后,将终止连接。如果您要在发生错误的情况下继续连接,必须在连接到此信号的作用域内部调用
ignoreSslErrors()
。如果您需要稍后访问错误列表,可以调用sslHandshakeErrors()。errors
包含一个或多个错误,阻止QSslSocket
验证对等方的身份。- startedEncryptionHandshake(socket)#
- 参数:
socket -
QSslSocket
当连接到
socket
的客户端发起TLS握手时,发出此信号。