Configurer NGINX + CloudFlare + SSL

DONC...

J'ai un nœud de l'application en cours d'exécution sur un serveur sur le port 8080 et je suis en train de permis de travail sur le protocole SSL à l'aide de NGINX et CloudFlare. Notez les points suivants...

  1. Mon hôte est en cours d'exécution Ubuntu 16.04 LTS
  2. Je suis actuellement en utilisant CloudFlare Universel de cryptage SSL (niveau gratuit)
  3. J'ai mon test d'hôte DNS le programme d'installation comme test.company.com
  4. J'ai copié le CloudFlare origine pull cert de cette post à mon test de la boîte de /etc/nginx/certs

...mon précédent NGINX configuration ressemblait...

server {
    listen 80;

    location /{
        proxy_pass http://localhost:8080;
    }
}

...il ressemble maintenant...

# 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;
  }
}

...J'ai suivi l'exemple ici et le lien qu'il fournit ici et je suis sceptique que tout ci-dessus est nécessaire (je suis un minimaliste). Chaque fois que j'exécute sudo nginx -t j'ai encore des messages d'erreurs autour de ssl_certificate et ssl_certificate_key pas être spécifié. Je ne peux pas savoir comment télécharger le besoin des fichiers à partir de CloudFlare et de ce que je comprends, je ne crois pas que j'en aurais besoin.

Si j'ai essayer de ré-utiliser le CloudFlare origine pull cert à la fois comme le ssl_certificate et ssl_certificate_key, j'obtiens l'erreur 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)

Je suis convaincu qu'il est possible de créer mon propre certificat auto-signé, mais je suis de la planification sur l'utilisation de cette stratégie, éventuellement, à faire tourner des machines de production. Toute aide sur de me pointer dans la bonne direction est beaucoup apprécié.

À l'aide de mon propre généré le pem et la clé, il fonctionne. En utilisant les fichiers générés par CloudFlare, j'ai le même problème. Avez-vous trouver ce qui n'allait pas ?
Il a été un moment depuis que j'ai été à la recherche dans ce, mais je pense que lorsque vous créez d'abord un CloudFlare distribution (ou peu importe son nom), le ssl_certificate_key est fourni à l'époque, à la fois... et qui doit être utilisé avec le certificat que vous pouvez télécharger à partir de CloudFlare à tout moment. Au moment où j'ai écrit cela, je pense que je n'avais tout simplement pas accès à l'original du fichier de clé. J'espère que ça aide, mais encore une fois, je ne suis vraiment pas sûr.

OriginalL'auteur Lane | 2016-12-19