Qt 4.7 SSL错误:“证书已过期”

时间:2011-03-16 05:51:38

标签: qt ssl openssl

我们使用OpenSSL库编译了QT代码。但是我们无法加载HTTPS网页。 SSL错误处理程序抛出“证书已过期”异常。我们使用http://orkut.com来测试SSL问题。

在我们重新编译Qt源之前发生了什么?

以下错误,当我们尝试启动HTTPS网址时

QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string

我们做了什么?

  1. 下载并安装Win32 OpenSSL v1.0.0d Light
  2. 打开VS2008命令提示符
  3. 导航至“C:\ Qt \ 4.7.1”
  4. configure.exe -debug-and-release -webkit -openssl -I C:\OpenSSL-Win32\Include -L C:\OpenSSL-Win32\Lib
  5. nmake
  6. 使用openSSL dll编译后出现

    错误

    1. 当我们尝试使用webview加载SSL网址时,我们收到以下错误
    2. “证书已过期”
    3. 我们处理了networkAccessManager sslErrors(QNetworkReply*,QList<QSslError>)事件,该事件显示为“证书已过期”错误。
    4. 我们不清楚解决此问题需要哪些其他设置

    5. 当我在32位系统中测试我的代码时,OpenSSL dll按预期工作。当我使用64位系统时,我收到“证书已过期”错误。我正在使用Qt creator 32位版本在64位系统中运行我的代码。我也在使用OpenSSL 32位版本。

2 个答案:

答案 0 :(得分:1)

您是否检查过系统的日期是否合适?

<强>更新
看起来你有32/64位不匹配的问题 如果你的应用程序是64位,你应该使用64位版本的OpenSSL。在Creator中运行应用程序时安装64位OpenSSL并确保它在PATH中(您可以在项目/运行设置/运行环境中添加OpenSSL到PATH的路径)

答案 1 :(得分:0)

你没有正确部署 - Qt无法在运行时找到openssl DLL,这就是你无法调用未解析的函数消息的原因。不知道为什么你会得到过期的证书错误与此相结合。