我试图运行一个简单的客户机/服务器来使用QSslSocket实现通信。我在Windows上工作(很不幸),为了更方便,我使用了QtCreator。
当我尝试从客户端使用MyQSslSocket->connectToHostEncrypted(ip, port)连接到服务器时,我会得到以下消息:
qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS初始化失败
当我打印引发的错误时,会得到以下错误:
QAbstractSocket::SocketError(20)
在文档中,我们可以发现这个错误代码对应于QAbstractSocket::SslInternalError,其描述如下:
“所使用的SSL库报告了一个内部错误。这可能是由于库安装错误或配置错误造成的。”
经过一些调查后,我发现Qt本身并不提供OpenSSL,所以我从这里安装了它(可以确定32位和64位版本的二进制文件)。
在安装过程中,dll被复制到C:\Windows\System32 32( 64位)。然后,我检查了PATH环境变量是否包含了这个文件夹。
在这一点上,我再次尝试,但我仍然有同样的问题,似乎OpenSSL安装仍然没有找到。
当我打印以下调用的输出时(在我的客户端的主要功能中):
qDebug() << QSslSocket::supportsSsl();
qDebug() << QSslSocket::sslLibraryVersionString();我得到以下产出:
错误 "“
我的问题是,如何使QSslSocket::supportsSsl()返回真实?
如果有人能教我错过了什么,我做错了什么,告诉我应该做什么才能使这个SSL连接正常运行,我将非常感激。
离别了。
很抱歉,这个问题很长,但我认为清楚地暴露问题和上下文是很重要的,这样可以帮助你轻松地理解问题,并给出更多相关的答案。
发布于 2019-05-07 17:28:56
好吧,多亏了@AlienPenguin和@Macias的建议,我的OpenSSL版本太新了。
最后,我已经安装了用于Qt构建的最接近的可用版本(我应该考虑到这一点),可以通过运行以下调用找到该版本:
qDebug() << QSslSocket::sslLibraryBuildVersionString();问题解决了。
再次感谢。
https://stackoverflow.com/questions/55992841
复制相似问题