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() 会尝试动态加载所需的库 libssllibcrypto

如果无法加载这些库,则函数 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 套接字不支持错误的主要内容,如果未能解决你的问题,请参考以下文章

无效的“Podfile”文件:套接字错误不支持操作

epmd 错误打开流套接字:协议不支持地址族

致命错误:凭证缓存不可用;没有Unix套接字支持[重复]

psql:服务器不支持 SSL,但需要 SSL

尝试访问本地主机中的数据库时如何解决“错误:服务器不支持 SSL 连接”?

如何使用 TLS/SSL 确保套接字连接的安全