仅在移动 chrome 上的 SSL 证书“err_cert_authority_invalid”

Posted

技术标签:

【中文标题】仅在移动 chrome 上的 SSL 证书“err_cert_authority_invalid”【英文标题】:SSL cert "err_cert_authority_invalid" on mobile chrome only 【发布时间】:2015-03-09 16:21:00 【问题描述】:

域名:https://www.amz2btc.com

来自 SSL 实验室的分析:https://www.ssllabs.com/ssltest/analyze.html?d=amz2btc.com

我所有的桌面浏览器都可以正常打开。移动火狐打开这个很好。只有当我尝试使用移动 Chrome 时,我才收到错误消息:err_cert_authority_invalid

我对 SSL 知之甚少,因此我无法真正理解 SSL 报告或为什么会出现此错误。如果有人可以 ELI5,那将是理想的。 :)

【问题讨论】:

我现在也遇到了这个问题。几周前它工作了,但现在 android chrome 得到了另一个。每个其他浏览器都可以正常工作。与我不同的是,我的网站托管在 AWS S3 和 CloudFront 中。我在云端安装了证书。该配置的任何指南、提示和资源? 重复***.com/questions/13862908/… 【参考方案1】:

我刚刚花了一个上午处理这个问题。问题不在于我缺少证书。那是我有一个额外的。

我开始使用我的 ssl.conf,其中包含我的服务器密钥和我的 SSL 证书颁发机构提供的三个文件:

#   Server Certificate:
SSLCertificateFile /etc/pki/tls/certs/myserver.cer

#   Server Private Key:
SSLCertificateKeyFile /etc/pki/tls/private/myserver.key

#   Server Certificate Chain:
SSLCertificateChainFile /etc/pki/tls/certs/AddTrustExternalCARoot.pem

#   Certificate Authority (CA):
SSLCACertificateFile /etc/pki/tls/certs/InCommonServerCA.pem

它在台式机上运行良好,但 Android 上的 Chrome 给了我err_cert_authority_invalid

后来很多头疼,搜索和糟糕的文档,我发现它是服务器证书链:

SSLCertificateChainFile /etc/pki/tls/certs/AddTrustExternalCARoot.pem

那是在创建一个不完整的第二个证书链。我注释掉了那行,留下了

#   Server Certificate:
SSLCertificateFile /etc/pki/tls/certs/myserver.cer

#   Server Private Key:
SSLCertificateKeyFile /etc/pki/tls/private/myserver.key

#   Certificate Authority (CA):
SSLCACertificateFile /etc/pki/tls/certs/InCommonServerCA.pem

现在它又可以在 Android 上运行了。这是在运行 Apache 2.2 的 Linux 上。

【讨论】:

在 Apache 2.4.7 上工作(测试于 23/06)【参考方案2】:

我在通过 Parse 托管网站并使用 NameCheap 转售的 Comodo SSL 证书时遇到了同样的问题。

您将在一个 zip 文件夹中收到两个证书文件: www_yourdomain_com.ca-bundle www_yourdomain_com.crt

您只能将一个文件上传到 Parse: Parse SSL Cert Input Box

在终端中合并两个文件:

cat www_yourdomain_com.crt www_yourdomain_com.ca-bundle > www_yourdomain_com_combine.crt

然后上传到 Parse。这应该可以解决 Android Chrome 和 Firefox 浏览器的问题。您可以通过在https://www.sslchecker.com/sslchecker 进行测试来验证它是否有效

【讨论】:

【参考方案3】:

对于那些在 IIS 服务器上遇到此问题的人。

说明:有时证书带有中间证书的URL,而不是实际证书。桌面浏览器可以使用此 URL DOWNLOAD 缺少的中间证书。但较旧的移动浏览器无法做到这一点。所以他们抛出这个警告。

你需要

1) 确保所有中间证书都由服务器提供

2) 禁用 IIS 中不需要的证书路径 - 在“受信任的根证书颁发机构”下,您需要为触发下载的证书“禁用所有用途”。

附言。我的同事写了一篇博文,里面有更详细的步骤:https://www.jitbit.com/maxblog/21-errcertauthorityinvalid-on-android-and-iis/

【讨论】:

为我工作。 COMODO RSA 证书颁发机构是我的问题 - 如您的链接中所述。【参考方案4】:

SSLabs 的报告说:

  This server's certificate chain is incomplete. Grade capped to B.
  ....
  Chain Issues                  Incomplete

桌面浏览器通常会从以前的连接中缓存链式证书,或者从证书中指定的 URL 下载它们。移动浏览器和其他应用程序通常不会。

通过包含丢失的证书来修复您的链,一切都应该正确。

【讨论】:

冒着听起来完全无能的风险(你知道,我可能是),我该怎么做呢?我必须按照分步指南在 WHM 中安装我自己的证书……我对此几乎一无所知。 我对WHM一无所知,但是证书的卖家通常会提供需要哪些中间证书(取决于卖家)以及如何在常用软件中安装它们的文档。所以你最好看看你是从哪里得到证书的。 我的链条也不完整。就我而言,它是通过在我的 apache 2.4.7 配置中指定 SSLCertificateChainFile 来解决的。 Apache 2.4.8 不再需要此指令:httpd.apache.org/docs/current/mod/…【参考方案5】:

我希望我还不算太晚,这里的解决方案对我有用,我正在使用 COMODO SSL,随着时间的推移,上述解决方案似乎无效,我的网站 lifetanstic.co.ke

您可以执行以下操作,而不是联系 Comodo 支持并获取 CA 捆绑文件:

当您从 Comodo(通过邮件)获得新的 SSL 证书时,他们会附上一个 zip 文件。您需要解压缩 zip 文件并在记事本等文本编辑器中打开以下文件:

AddTrustExternalCARoot.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt

然后复制每个“.crt”文件的文本并将文本粘贴到“证书授权包(可选)”字段中。

之后,只需像往常一样在“证书”字段中添加 SSL 证书,然后单击“Autofil by Certificate”按钮并点击“安装”。

受此要点启发:https://gist.github.com/ipedrazas/6d6c31144636d586dcc3

【讨论】:

我对 COMODO 也有同样的问题,但在我的情况下,修复是 concat mydomain.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > final-file.crt(按此顺序)并且没有 AddTrustExternalCARoot.crt 【参考方案6】:

我也遇到了链条问题,并设法使用本指南https://gist.github.com/bradmontgomery/6487319解决了

【讨论】:

【参考方案7】:

如果您像我一样使用 AWS 和 CloudFront,以下是解决问题的方法。它与其他人分享的内容相似,只是您不使用域的 crt 文件,只是 comodo 给您发送的电子邮件。

cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl-bundle.crt

这对我有用,我的网站不再在 android 的 chrome 上显示 ssl 警告。

【讨论】:

您必须在此命令中也包含您自己的 .crt...我花了一两分钟才意识到这一点【参考方案8】:

我用这个命令解决了我的问题:

cat __mydomain_com.crt __mydomain_com.ca-bundle > __mydomain_com_combine.crt

之后:

cat __mydomain_com_combine.crt COMODORSADomainValidationSecureServerCA.crt 
COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > mydomain.pem

在我的域 nginx .conf 中,我把服务器 443:

ssl_certificate          ssl/mydomain.pem;
ssl_certificate_key      ssl/mydomain.private.key;

别忘了重启你的“Nginx”

service nginx restart

【讨论】:

【参考方案9】:

检查证书链中是否存在问题的一种不错的方法是使用此网站:

https://www.digicert.com/help/

插入您的测试网址,它会告诉您可能出了什么问题。我们遇到了与您的症状相同的问题,我们的问题被诊断为由中间证书引起。

SSL 证书不受信任

证书未由受信任的机构签署(检查 Mozilla 的根存储)。如果您从受信任的机构购买证书 权限,您可能只需要安装一个或多个中级 证书。请联系您的证书提供商以获取帮助 这适用于您的服务器平台。

【讨论】:

【参考方案10】:

我遇到了同样的问题,但 Mike A 的回复帮助我弄清楚了: 我有一个我的证书、一个中间证书 (Gandi)、另一个中间证书 (UserTrustRSA),最后是 RootCA 证书 (AddTrust)。

首先我用 Gandi+UserTrustRSA+AddTrust 制作了一个链文件,并用 SSLCertificateChainFile 指定它。但它没有用。

所以我通过将 AddTruct 证书放入一个文件并使用 SSLCACertificateFile 指定它并删除 SSLCertificateChainFile 来尝试 MikeA 答案。但它没有奏效。

所以最后我制作了一个链文件,其中只有 Gandi+UserTrustRSASSLCertificateChainFile 指定,另一个文件只有 RootCA 由 SSLCACertificateFile 并且成功了。

#   Server Certificate:
SSLCertificateFile /etc/ssl/apache/myserver.cer

#   Server Private Key:
SSLCertificateKeyFile /etc/ssl/apache/myserver.key

#   Server Certificate Chain:
SSLCertificateChainFile /etc/ssl/apache/Gandi+UserTrustRSA.pem

#   Certificate Authority (CA):
SSLCACertificateFile /etc/ssl/apache/AddTrust.pem

阅读时似乎合乎逻辑,但希望对您有所帮助。

【讨论】:

【参考方案11】:

我猜你应该安装 CA 证书表格一,如果授权中心:

ssl_trusted_certificate ssl/SSL_CA_Bundle.pem;

【讨论】:

【参考方案12】:

只需对版本 44.0.2403.155 dev-m 执行以下操作

隐私 -->内容设置 -->不允许任何网站运行 javascript

问题解决

【讨论】:

以上是关于仅在移动 chrome 上的 SSL 证书“err_cert_authority_invalid”的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 上的 ERR_SSL_VERSION_INTERFERENCE

LocalHost 的自签名证书上的 Chrome NET::ERR_CERT_AUTHORITY_INVALID 错误

Apache SSL chrome 错误:NET::ERR_CERT_AUTHORITY_INVALID

ini MacOS Sierra和Chrome上的自签名SSL证书

为啥出现ERR_SSL_PROTOCOL_ERROR 错误啊?

浏览器可接受的 SSL 证书