繁体   English   中英

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

[英]Qt 4.7 SSL error : "The certificate has expired”

我们使用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 -IC:\\OpenSSL-Win32\\Include -LC:\\OpenSSL-Win32\\Lib
  5. nmake

使用openSSL dll编译后出现错误

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

当我在32位系统中测试代码时,OpenSSL dll可以按预期工作。 当我使用64位系统时,出现“证书过期”错误。 我正在使用Qt Creator 32位版本在64位系统中运行我的代码。 我也使用OpenSSL 32位版本。

您检查系统日期是否正确吗?

UPDATE
看来您有32/64位不匹配的问题。
如果您的应用是64位,则应使用64位版本的OpenSSL。 从Creator中运行应用程序时,安装64位OpenSSL并确保它位于PATH中(您可以在Projects / Run Settings / Run Environment中将OpenSSL的路径添加到PATH)

您尚未正确部署-Qt在运行时无法找到openssl DLL,这就是为什么您收到无法调用未解决的函数消息的原因。 但是,不知道为什么会结合使用此证书而导致过期证书错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM