我们使用 OpenSSL 库编译了 QT 代码。但是我们无法加载 HTTPS 网页。 SSL 错误处理程序抛出“证书已过期”异常。我们用了http://orkut.com测试 SSL 问题。
在我们重新编译 Qt 源代码之前发生了什么?
以下错误,当我们尝试启动 HTTPS url 时
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
我们做了什么?
- 下载并安装 Win32 OpenSSL v1.0.0d Light
- 打开 VS2008 命令提示符
- 导航到“C:\Qt\4.7.1”
-
configure.exe -debug-and-release -webkit -openssl -I C:\OpenSSL-Win32\Include -L C:\OpenSSL-Win32\Lib
-
nmake
用openSSL dll编译后出错
- 当我们尝试使用 webview 加载 SSL url 时,出现以下错误
- “证书已过期”
- 我们处理了 networkAccessManager
sslErrors(QNetworkReply*,QList<QSslError>)
显示为“证书过期”错误的事件。 - 我们不清楚解决此问题需要哪些额外的设置
当我在 32 位系统中测试我的代码时,OpenSSL dll 按预期工作。当我使用 64 位系统时,出现“证书过期”错误。我正在使用 Qt Creator 32 位版本在 64 位系统中运行我的代码。我也在使用 OpenSSL 32 位版本。
最佳答案
你检查过系统日期是否正常吗?
更新
您似乎遇到了 32/64 位不匹配问题。
如果您的应用程序是 64 位的,您应该使用 64 位版本的 OpenSSL。安装 64 位 OpenSSL 并确保在 Creator 中运行您的应用程序时它位于 PATH 中(您可以在 Projects/Run Settings/Run Environment 中将 OpenSSL 的路径添加到 PATH)
关于Qt 4.7 SSL 错误 : "The certificate has expired” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321549/