web-dev-qa-db-ja.com

NGINX + CloudFlare + SSLを構成する

そう...

サーバー上でポート8080で実行されているノードアプリケーションがあり、NGINXとCloudFlareを使用してSSL上で動作するように有効にしようとしています。次のことに注意してください...

  1. 私のホストはUbuntu 16.04 LTSを実行しています
  2. 現在、CloudFlareのユニバーサルSSL(無料利用枠)を使用しています
  3. Test.company.comとしてテストホストDNSをセットアップしています
  4. CloudFlare Origin pull certを this からテストボックスの/ 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;
  }
}
_

...例に従いました here とそれが提供するリンク here そして、上記のすべてが必要であることに懐疑的です(私はミニマリストです)。 _Sudo nginx -t_を実行するたびに、まだssl_certificateとssl_certificate_keyが指定されていないというエラーが表示されます。 CloudFlareから必要なファイルをダウンロードする方法を理解できず、私が理解していることから、必要があるとは思わない。

CloudFlare Originプル証明書を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)が表示されます

独自の自己署名証明書を作成できると確信していますが、最終的にこの戦略を使用して実稼働マシンを起動することを計画しています。私を正しい方向に向ける助けはありがたいです。

10
Lane

ニース、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セクションに移動します。そこから、「Origin Certificates」セクションの「Create Certificate」ボタンをクリックします。ウィザードの手順を完了すると、証明書ファイルとキーファイルの両方をダウンロードできるウィンドウが表示されます。必ず正しいファイルに入れて、Webサーバーにインストールしてください。

Cloudflare Origin CA Certificate and Key

参考文献:

5
mjsa