Qt 4.7 SSL 错误 : "The certificate has expired”

标签 qt ssl openssl

我们使用 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

我们做了什么?

  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

用openSSL dll编译后出错

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

当我在 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/

相关文章:

Tomcat:无法创建 HTTPS 站点

openssl - 使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?

qt - 树外 galcore 构建导致 Qt 段错误

css - Qt Designer 样式表中的自定义颜色

mysql - Zend Framework中通过ssl连接mysql服务器

openssl - 如何仅更改现有 csr 中的主题 (CN)

c - OpenSSL 非阻塞套接字 SSL_read() 不可预测

c++ - 如何在 Qt 中为矩阵类定义 [ ][ ] 运算符?

c++ - 内存管理 - addwidget 是否分配父级

wordpress - 无法在 Google Cloud Compute Engine 上运行 SSL 配置