【问题标题】:ssl sockets not supported errorssl 套接字不支持错误
【发布时间】: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 上运行。

标签: qt websocket tornado


【解决方案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 没有加载。要找出您缺少的内容,请使用依赖项查看器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2021-12-17
相关资源
最近更新 更多