QT_NO_SSL和QSslSocket :: supportsSsl()之间的关系

时间:2016-01-27 11:01:50

标签: ssl qt5 qsslsocket

如果找不到Ssl库,则定义QT_NO_SSL。 还有方法QSslSocket::supportsSsl()

但这两者如何相关,它们是否相同? QT_NO_SSL <=> QSslSocket::supportsSsl() returns false是否成立{或者{}未定义,QT_NO_SSL是否会返回false?

1 个答案:

答案 0 :(得分:4)

Qt(至少使用OpenSSL后端)可以编译:

  1. 没有SSL支持 - QT_NO_SSL已定义,SSL类甚至无法用于编译;
  2. 在运行时加载SSL支持=&gt; OpenSSL标头必须在编译时出现,但QtNetwork不会链接到libssl / libcrypto / ...;相反,它会dlopen那些库在运行时寻找它需要的功能;
  3. 从QtNetwork链接SSL支持。
  4. 其原因在于,将QtNetwork链接到加密库会在向/向美国的再分配方面带来法律问题。使用#3,必须拥有SSL库,否则您的应用程序将无法启动,即使您根本不需要SSL;和Qt安装程序无法“轻松”运送这些SSL库。因此,Qt在配置#2中编译而负责安装OpenSSL。

    未定义QT_NO_SSLQSslSocket::supportsSsl()返回false的情况为#2(例如,如果Qt无法找到或加载合适的SSL库)。