配置NGINX + CloudFlare + SSL

所以...

我有一个节点应用程序在端口8080上的服务器上运行,我试图通过使用NGINX和CloudFlare使其能够通过SSL工作。 请注意以下...

  • 我的主机运行Ubuntu 16.04 LTS
  • 我目前使用CloudFlare的通用SSL(免费层)
  • 我的测试主机DNS设置为test.company.com
  • 我已将CloudFlare原始拉取证书从此帖子复制到我的测试箱的/ etc / nginx / certs中
  • ...我以前的NGINX配置看起来像...

    server {
        listen 80;
    
        location / {
            proxy_pass http://localhost:8080;
        }
    }
    

    现在看起来像...

    # HTTP
    server {
      listen 80;
      listen [::]:80 default_server ipv6only=on;
      return 301 https://$host$request_uri;
    }
    
    # HTTPS
    server {
      listen 443;
      server_name test.company.com;
    
      ssl on;
      ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
      ssl_verify_client on;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
      ssl_prefer_server_ciphers on;
    
      location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://localhost:8080/;
        proxy_ssl_session_reuse off;
        proxy_set_header Host $http_host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect off;
      }
    }
    

    ...我遵循这里的例子和它提供的链接,我怀疑上面的所有内容都是必需的(我是极简主义者)。 每当我运行sudo nginx -t我仍然会在ssl_certificate和ssl_certificate_key没有被指定时出错。 我无法弄清楚如何从CloudFlare下载需要的文件,以及从我的理解中,我不相信我需要。

    如果我尝试重复使用CloudFlare原始拉取证书作为ssl_certificate和ssl_certificate_key,则会出现错误nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/certs/cloudflare.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)

    我相信可以创建自己的自签名证书,但是我打算最终使用这种策略来生产生产机器。 任何帮助指引我在正确的方向非常感谢。


    看起来您正在使用Cloudflare的Origin CA服务,太棒了!

    该问题看起来像您已将SSL私钥放入ssl_client_certificate属性中,并未将您的真实SSL证书放入您的配置中。 您的Nginx SSL配置应该包含以下行:

    ssl_certificate /path/to/your_certificate.pem; ssl_certificate_key /path/to/your_key.key;

    确保SSL证书与正确内容的.PEM文件相对应,并且证书密钥文件也包含正确内容的.KEY文件。

    要使用Origin CA生成证书,请导航至Cloudfalre仪表板的Crypto部分。 从那里,单击“原始证书”部分中的“创建证书”按钮。 一旦完成向导中的步骤,您将看到一个窗口,允许您下载证书文件和密钥文件。 确保将它们放在正确的文件中并将它们安装到Web服务器上。

    Cloudflare起源CA证书和密钥

    进一步阅读:

  • 如何在NGINX中安装Origin CA证书
  • 使用Origin CA创建和管理证书
  • 链接地址: http://www.djcxy.com/p/32471.html

    上一篇: Configure NGINX + CloudFlare + SSL

    下一篇: Warning about SSL connection when connecting to MySQL database