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