【问题标题】:Cloudflare SSL cert throws a Security IssueCloudflare SSL 证书引发安全问题
【发布时间】:2019-08-20 18:15:41
【问题描述】:

我已将我的 nginx 配置为使用我从 cloudflare crypto 下载的证书和 private_key。

这是我的 nginx.conf 文件-

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name autocaptions.app *.autocaptions.app;

        location / {
                proxy_pass http://127.0.0.1:7887;
        }
        ssl on;
        ssl_certificate /home/ubuntu/sslcerts/autocaptions.pem;
        ssl_certificate_key /home/ubuntu/sslcerts/private-key.pem;
        # ssl_client_certificate /home/ubuntu/sslcerts/cloudflare.crt;
        # ssl_verify_client on;
}


# Redirect http to https
server {
        listen 80;
        listen [::]:80;
        return 301 https://$host$request_uri;
}

我不确定是什么问题。我已经添加了证书和 private_key。

当我尝试访问https://autocaptions.app时,我在浏览器中看到以下错误-

文本错误-

autocaptions.app has a security policy called HTTP Strict Transport Security (HSTS), which means that Firefox can only connect to it securely. You can’t add an exception to visit this site.

在 Cloudflare 配置中,我已禁用 HSTS,不知道为什么会出现此错误。

我已按照digitalocean 教程配置 SSL。

【问题讨论】:

  • “CloudFlare Origin SSL Certificate Authority”不打算在服务器和浏览器之间使用。如果您想这样做,您需要将其添加为受信任的浏览器。
  • @SteffenUllrich 我没有得到必须做的事情。我只在应用程序中使用证书和 private_key,如上面的配置所示。请你能告诉我我错过了什么吗?

标签: ssl nginx https cloudflare


【解决方案1】:

您正在使用由“Cloudflare Origin CA”签名的证书。此 CA 颁发的证书旨在安装在您的源服务器上,以便 Cloudflare CDN 和您的源服务器之间的通信可以通过证书得到保护。

此类证书适用于面向最终用户的系统(即浏览器)。它们仅用于保护您的源服务器和 Cloudflare 之间的通信。典型的最终用户不会在他们的浏览器中将“Cloudflare Origin CA”作为受信任的 CA,因此他们在连接到您的源服务器时会收到 TLS 错误 - 这就是您所得到的。但是典型的最终用户首先不应该连接到源服务器 - 他们应该连接到 Cloudflare 实例。只有 Cloudflare 本身应该连接到源服务器,并且他们会承认自己的 CA 是受信任的。

【讨论】:

  • 那么,cloudflare 不提供面向最终用户/浏览器的免费 SSL 吗?我在哪里可以找到它?在过去的 1 年里,我使用的是 namecheap 提供的 SSL。它已经过期了,所以想开始使用 cloudflare SSL。
  • @bozzmob:Cloudflare 不是提供免费证书的公共 CA,您可以在自己的服务器上使用。如果您的域受 Cloudflare 保护,Cloudflare 将为您的域提供证书。但在这种情况下,私有密钥由 Cloudflare 保留,仅供在他们自己的服务器上使用。如果您想为自己的服务器使用免费证书,则可以使用 Let's Encrypt。
  • 非常感谢。我使用了让加密及其备份。我希望到期时间多一点,即使它是付费服务,我也不介意。将探索。
【解决方案2】:

TL;DR @SteffenUllrich 是绝对正确的,应该是公认的答案。

这是您当前的设置。 您正在使 DNS 记录变得模糊不清,实质上是将您的源服务器的 IP 地址暴露给全世界。 这里的第一个问题是,它类似于在 Twitter/Facebook 上发布你家的地址,说前门没有锁,所以请随意进来拿走你想要的!

                                              Cloudflare Origin CA Certificate
                                                         |
client <---------------------HTTPS-----------------> your origin (AWS)

这里的第二个问题是 CloudFlare Origin CA 证书不适用于客户端-服务器连接。其目的是仅加密 Cloudflare 边缘和您的源之间的连接。您可以将其视为自签名证书。这就是您看到错误的原因。

一个非常简单的解决方案是将此原始证书替换为其他免费或付费 SSL 证书,例如 Let's Encrypt/Certbot。如果您决定采用这种方式,则可以根据需要跳过下面的其余说明。

如果您希望继续使用 Cloudflare Origin CA 证书,请继续阅读。

下一步是通过橙色云化 DNS 记录来代理您与 Cloudflare 的连接。客户端和 Cloudflare 边缘之间的连接将使用 Cloudflare 的免费(共享)通用 SSL 证书进行加密。它将部分解决问题,但只有一半的客户端-服务器连接被加密,因为您使用的是灵活模式。 Cloudflare edge 和您的源之间的连接不会被加密。

                 Universal SSL Certificate
                            |
client <---HTTPS---> Cloudflare edge <----HTTP----> your origin (AWS)

将 SSL 模式从灵活更改为完全或完全(严格)的最后一步。现在您将获得端到端加密。

                 Universal SSL Certificate       Cloudflare Origin CA Certificate
                            |                           |
client <---HTTPS---> Cloudflare edge <----HTTPS----> your origin (AWS)

有什么问题吗?

【讨论】:

  • 简直令人惊叹的解释。非常感谢您的澄清。
【解决方案3】:

Crypto 标签下检查您网站的 SSL 设置。如果它处于“完全(严格)”状态,请将其更改为“完全”或“灵活”。

【讨论】:

  • 原来是full,现在变成了flexible。但是,我仍然看不到任何变化。有什么我想念的吗?以及将状态从full更改为flexible需要多少时间?
  • 在讨论中,我看到有人提到可能导致问题的“强制 https”。 imgur.com/a/qUepeV0他们指的是这个吗?
  • 是的,还有加密标签下的 SSL 设置。
  • 我对两者都进行了更改。我使 ssl 变得灵活,并关闭了“始终使用 https”。 imgur.com/a/JBeVYfE我仍然没有看到反映更改的网页。
  • 在您安装 SSL 证书之前该站点是否正常运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2016-08-24
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多