13

我有一个使用 SSL 客户端证书授权的网站。所有客户端证书均使用 OpenSSL 生成并且是自签名的。一切都适用于所有网络浏览器,但推荐的是谷歌浏览器,因为它使用与 IE 相同的 SSL 仓库,因此证书安装非常简单(点击-点击-密码-完成!)。上次更新谷歌“Chrome 29.0.1547.57 m”后,没有人可以访问我的网络服务器,即使是我。仅限谷歌浏览器错误!IE 和 FF 工作正常。错误是:ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED。服务器错误日志中的相同。你有什么建议吗?问题是大多数客户不熟悉个人电脑,他们对这种情况感到非常害怕。因此,电话支持人员正处于电话的浪潮中。

4

6 回答 6

7

我们遇到了同样的问题。正如 Sean 所报道的,Windows XP 上的 Chrome 似乎在协商 TLSv1.2,即使操作系统不支持 SHA-2(例如,SHA-256 或 SHA-384)哈希函数。

我们发现 Chrome 在收到 SERVER HELLO 之后的“客户端证书请求”时失败。SERVER HELLO 本身协商 RC4-SHA1(在我们的环境中)应该会成功。有问题的数据包似乎是“客户端证书请求”,其中包括用于散列的 SHA-2(以及 SHA1)函数。

使用“--enable-logging --log-level=0”调用 Chrome 会输出以下消息: ERROR:nss_ssl_util.cc(193)] ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED: NSS error -12222, OS error -2146893816

这是对应于 CryptSignHash 函数的“NTE_BAD_ALGID”的操作系统错误:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa380280 (v=vs.85).aspx

在服务器上禁用 TLSv1.2 应该可以解决问题。但我认为 Chrome 应该更喜欢 Windows XP 上的 SHA1。

于 2013-08-26T02:06:06.503 回答
4

我在这里遇到了同样的事情,Windows7 客户端系统无法针对我们的某些系统使用客户端证书进行身份验证,但其他系统则不然。受影响的服务器正在运行 Apache Tomcat,而未受影响的服务器正在运行 IIS7,尽管我不愿将这种差异确定为罪魁祸首。

还有人看到这个吗?

编辑:

我可以通过在服务器上禁用 TLSv1.2 来解决这个问题。有其他人能够复制这种经验吗?

我也很想知道是否有其他人在 Windows 平台以外的平台上看到了这个,因为它是这里唯一发生的地方(相同版本的 OSX 没有问题)。

编辑2:

Chrome 错误报告在这里:https ://code.google.com/p/chromium/issues/detail?id=278370

编辑3:

应该在最新的 Chrome 稳定版中再次工作。Chrome 30 将有更强大的修复,但 29.x 现在也应该可以工作了。

于 2013-08-23T13:43:21.547 回答
1

我最近在 Mac OS 上的 Chrome 中遇到了类似的问题。它在 Firefox 上运行良好,但在更改我的公司 (AD) 凭据后开始在 Chrome 和 Safari 中失败——我猜问题是系统凭据和钥匙串凭据不匹配。

我的解决方案是重置钥匙串访问应用程序中的私钥访问权限。

要进行重置:

  1. 在钥匙串访问应用程序中,右键单击每个失败的私钥,然后选择“获取信息”。
  2. 转到“访问控制”选项卡并设置“允许所有应用程序访问此项目” - 即使已设置,也请单击该选项。然后单击保存更改。
  3. 刷新失败的网站,系统会提示您输入钥匙串密码 - 输入并选择始终允许。
于 2020-11-02T23:19:23.980 回答
0

它是 Win XP 和 Google Chrome 的组合 29.0.1547.57 m 在 Win 7/8 上不会出现此问题。

您可以安装较旧的工作版本 28.0.1500.95 http://www.filehippo.com/download_google_chrome/15657/

但是禁用更新的设置并不那么容易。 http://dev.chromium.org/administrators/turning-off-auto-updates

于 2013-08-22T08:33:26.160 回答
0

该问题是由在 Windows XP 上运行 TLSv1.2 的 Chrome 引起的。

这可以在服务器端禁用,也可以在客户端禁用。

要使用较低版本的 TLS 运行 Chrome,请使用命令行选项 --ssl-version-max=tls1.1 启动它

于 2013-09-18T07:34:26.590 回答
0

我有这个问题将 Chrome 与 WebSockets 连接到 apache throw proxy_wstunnel_module。

我的解决方案是配置 httpd.conf

ProxyPass /wss2/ ws://127.0.0.1:8080/  retry=0 keepalive=On
ProxyPassReverse /wss2/ ws://127.0.0.1:8080/  retry=0 
    <Location /wss2/>
        SSLRequireSSL On
        SSLVerifyClient none
        SSLVerifyDepth 1
        SSLOptions +StdEnvVars +StrictRequire
        SSLRenegBufferSize 10486000
    </Location>

Chrome WebSockets 不喜欢参数 SSLVerifyClient 可选

我希望这有帮助。

于 2016-05-16T04:54:13.963 回答