我有一个公司.sv域名,最近购买了 RapidSSL 通配符证书,我安装了它并用许多浏览器(Firefox、Chromium、Chrome、IE)和 SSL 检查工具对其进行了测试,除了 Windows、Linux 和 Android 上的 Google Chrome 之外,它在所有浏览器上都运行良好。
每次我通过 Google Chrome 访问该网站时,都会显示一条警告,提示我试图访问www.company.sv或者whatever.company.sv但服务器将自己标识为**.company.sv*。如果我不顾警告继续并单击红色锁,它会告诉我我连接的服务器仅在我的网络内有效,无法通过外部认证实体进行验证。
我联系了证书经销商的支持服务,但他们无法直接回答我的问题是什么。我一直在想这是否与 TLD 有关.sv。我还检查了 Chromium 源代码,但这似乎毫无意义,因为该证书在 Chromium 上运行完美。
也许值得一提的是,我在 Ubuntu 12.04 服务器上使用 NGINX,并且在购买通配符证书之前我测试了 Comodo 的免费单域证书。
答案1
听起来您忘记在 Web 服务器上安装中间证书包了。请访问证书供应商的网站下载中间证书包。
对于 nginx,这必须与您的证书连接并放置在ssl_certificate
指令中,例如:
# cat company.sv.crt ca_bundle.crt > company.sv.chained.crt
在你的 nginx 配置中:
ssl_certificate /etc/path/to/company.sv.chained.crt
答案2
我怀疑您在主题 CN= 字段中输入了站点名称,它需要位于主题备用名称字段中,以便 Chrome 接受它。如果您在浏览器中显示证书,或者使用openssl x509 -in certificate-file -text
看:
这些基本要求规定证书颁发机构在其颁发的 SSL 证书中始终包含至少一个主题备用名称,这意味着今天应用程序不需要同时查看通用名称和主题备用名称,而只需要检查后者。
目前,大多数证书颁发机构也会在通用名称字段中包含来自主题备用名称的第一个 DNS 名称,但这主要是由于遗留原因,并且在不久的将来的某个时候将会停止。
证书有两种方式来表达其绑定的域/IP - 一种是非结构化且不明确的(commonName),另一种是定义明确的(subjectAltName)。如果没有任何 subjectAltName,Chrome 目前会将域与 commonName(如果存在)进行比较。
此提案旨在删除该后备路径;实际上,需要 subjectAltName。理想情况下,我们会对所有证书(公共信任和私人信任)执行此操作,但如果存在兼容性风险,我们可以将其限制为公共信任的证书。