【问题标题】:SSL certificates briefly appearing on site, then dissapearingSSL 证书短暂出现在网站上,然后消失
【发布时间】:2023-03-20 19:50:02
【问题描述】:

我正在我的网站上实施 SSL,但 Chrome 上的绿色条闪烁片刻然后消失。我的证书由 Comodo 签名。 AFAIK 我的 nginx 配置是正确的,但我似乎无法让 https 坚持下去。我的 8080 重定向有效,并且我的证书具有 chmod 600,并且位于指定的目录中。

有什么想法吗?

server {
    listen          8080;
    server_name     *.example.com;
    return          301 https://www.example.com;
}

server {
    listen                  443 ssl;
        server_name             *.example.com;
        ssl_certificate         /home/ubuntu/example.com.ssl/example.com.crt;
        ssl_certificate_key     /home/ubuntu/example.com.ssl/example.com.key;
        ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers             HIGH:!aNULL:!MD5;
    location / {
        proxy_pass  http://localhost:3333;
    }
}

编辑:我的证书由受信任的机构签署。

【问题讨论】:

  • 您的证书是自签名的还是由浏览器默认信任的证书颁发机构之一签名的?
  • 由 Comodo 签名,因此具有权威性。
  • 您是否偶然在其他浏览器上尝试过?
  • 我试过 Safari 和 Chrome。我在 Chrome 中看到闪烁,但 Safari 似乎根本不承认 SSL。
  • 通过ssllabs.com/ssltest运行您的网站

标签: node.js ssl nginx https


【解决方案1】:

如 cmets 中所述,https 配置设置最好通过以下工具运行您的站点进行测试:https://www.ssllabs.com/ssltest/

您提到缺少一些 CA 文件,所以我猜您的证书只是您网站的证书,而不是返回根证书的完整链?

这很容易通过查看您的证书文件来验证:

ssl_certificate     /home/ubuntu/example.com.ssl/example.com.crt;

如果此文件包含一个证书(只有一个 BEGIN CERTIFICATE 行),那就是问题所在。它应该包含至少两个证书(对于三个证书链),如果您的 CA 使用更长的证书链,则可能更多。根证书不需要(也不应该!)在这个文件中,因为它已经被浏览器知道了。

所以获取中间证书(它们应该与您的证书一起提供 - 但也可用here for Comodo),然后合并到一个文件中:

cat example.com.crt intermediate.crt > example.com_with_chain.crt

或者如果您有两个中间体,则如下所示(其中intermediate1.crt os 是颁发您的证书的证书,它是由intermediate2.crt 颁发的,它是由您的浏览器信任的根证书颁发的):

cat example.com.crt intermediate1.crt intermediate2.crt > example.com_with_chain.crt

注意顺序很重要。然后更新您的 ssl_certificate 配置以指向这些组合的 crt 并重新启动 Nginx 并重复 ssltest 测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多