ssl 套接字不支持错误
Posted
技术标签:
【中文标题】ssl 套接字不支持错误【英文标题】:ssl sockets not supported error 【发布时间】:2015-10-15 06:23:51 【问题描述】:我正在运行 tornado 网络服务器以在 linux centos 6.6 上进行安全的 websocket 连接。我正在使用 Qt/c++ 客户端通过打开类似“wss://191.23.4.56/etr/job”的 URL 来使用 QWebsocket 进行连接。 我收到错误,例如, "此平台不支持 SSL 套接字" 这个错误是关于什么的?
【问题讨论】:
有人遇到过类似的错误吗?我的 Qt 客户端在 Windos 7 上运行。 【参考方案1】:当 URL 方案为 wss
并且 QSslSocket::supportsSsl()
返回 false
时,QWebSocket::open()
会打印错误消息 “此平台不支持 SSL 套接字”。
静态成员函数QSslSocket::supportsSsl()
:
如果此平台支持 SSL,则返回 true;否则,返回 false。 如果平台不支持 SSL,则套接字将在 连接阶段。
这是你的主要问题。现在我们需要找出为什么Qt
认为该平台不支持SSL。
如果您将 Qt 作为二进制包下载,函数 supportsSsl()
会尝试动态加载所需的库 libssl
和 libcrypto
。
如果无法加载这些库,则函数 supportsSsl()
返回 false
。
您的系统中可能没有安装libssl
。如果您可以在系统中找到库二进制文件,但 Qt 未加载它们,则您的二进制文件 libssl
和/或 libcrypto
可能与二进制 Qt 不兼容。
为避免此类问题,您可以构建自己的 Qt。例如,有一个新的说明如何构建Qt-5.5.1。注意-openssl-linked
配置开关的技巧。它支持将 OpenSSL 库集成到 Qt5 库中,而不是在运行时动态加载它们。
【讨论】:
最近,Qt维护工具也支持安装OpenSSL库。您仍然必须将它们的位置添加到 PATH 环境变量中。但是,在我的情况下,由于缺少包含在 Microsoft Visual C++ 2010 Redistributable Package 中的依赖项(msvcr100.dll),dll 没有加载。要找出您缺少的内容,请使用依赖项查看器。以上是关于ssl 套接字不支持错误的主要内容,如果未能解决你的问题,请参考以下文章