我试图找出为什么 Chromium 对 TLS 证书不满意,以及如何修复它:
升级并重新启动 Chromium(现在为 58.0.3029.81,在 Debian 测试上运行)后,我无法再访问我们的内部 GitLab 服务器(通过集成包安装在 Debian Jessie 上)。我得到:
你的连接不是私人的
攻击者可能试图从 git.ourdomain.net 窃取您的信息(例如密码、消息或信用卡)。 NET::ERR_CERT_COMMON_NAME_INVALID
该证书由我们的内部 CA 签名,该 CA 安装在系统存储中(通过将其放入/usr/local/share/ca-certificates
)。我使用 Firefox 52 和openssl s_client -verify 5 -verify_return_error -connect git.ourdomain.net:443
;检查了该网站。两人都很高兴。 OpenSSL 将链显示为:
Certificate chain
0 s:/C=US/ST=Virginia/L=Sterling/O=«us»/OU=Servers/CN=git.ourdomain.net
i:/C=US/ST=Virginia/L=Sterling/O=«us»/CN=«us» Certification Authority/[email protected]
OpenSSL 和 Firefox 都显示出强大的签名 (SHA-512) 和密码 (AES-GCM)。该证书(根据openssl x509 -text
)是 sha512WithRSAEncryption,具有 4096 位 RSA 密钥。它有 Netscape 证书类型的 SSL 客户端、SSL 服务器。
注意:“us”和 ourdomain.net 是经过编辑的;实际输出中我们的公司名称为“us”,我们的实际域名为 ourdomain.net。我仔细检查了所有 ourdomain.net 是否确实匹配。
据我所知,证书没有任何问题,通用名称 (git.ourdomain.net) 完全有效并且与 URL 匹配——那么 Chromium 抱怨什么呢?而且,假设这不是一个真正的问题,是否有某种方法可以覆盖它?
答案1
看来是从铬错误 308330他们认为将主机名与证书通用名称匹配时存在错误匹配的风险,因此已禁用该功能。 Chromium 现在仅匹配 subjectAltName 扩展。 Firefox 也进行了类似的更改,但仅限于公共 CA 颁发的较新证书,而不是内部证书。这就是 Firefox 仍然有效的原因。
可以通过设置策略来覆盖 Chromium 更改EnableCommonNameFallbackForLocalAnchors
,该策略可以/etc/chromium/policies/managed/use-common-names.json
使用以下内容创建:
{
"EnableCommonNameFallbackForLocalAnchors": true
}
创建后似乎必须重新启动 Chromium。