2016-12-19 39 views
7

SO ...Konfiguracja Nginx + CloudFlare + SSL

Mam aplikacji węzeł uruchomiony na serwerze na porcie 8080 i staram się być włączona go do pracy przez SSL przy użyciu Nginx i CloudFlare. Uwaga Po ...

  1. Mój gospodarz jest Ubuntu 16,04 LTS
  2. Obecnie używam CloudFlare Universal SSL (free tier)
  3. Mam testowej konfiguracji hosta DNS jako test.company.com
  4. mam skopiowane CloudFlare pochodzenie ściągania cert od this Prześlij do mojego Test Box/etc/nginx/certs

... mój poprzedni konfiguracji nginx wyglądało ...

server { 
    listen 80; 

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

... to teraz wygląda ...

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

... I za przykładem here a link to zapewnia here i jestem sceptyczny, że wymagana jest wszystko powyżej (I” m minimalistyczny). Ilekroć uruchamiam sudo nginx -t nadal dostaję błędy wokół ssl_certificate i ssl_certificate_key nie jest określony. Nie mogę wymyślić, jak pobrać wymagane pliki z CloudFlare i z tego co rozumiem, nie wierzę, że powinienem.

Gdyby spróbować ponownie wykorzystać CloudFlare pochodzenie ściągania cert zarówno jako ssl_certificate i ssl_certificate_key, pojawia się błąd 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)

Jestem przekonany, że jest możliwe, aby stworzyć własny certyfikat z podpisem własnym, ale Planuję wykorzystać tę strategię, aby ostatecznie uruchomić maszyny produkcyjne. Pomocna wskazówka w dobrym kierunku jest bardzo cenna.

Odpowiedz

1

Wygląda na to, że korzystasz z usługi Origin CA Cloudflare, fajnie!

Problem wygląda na to, że wprowadziłeś klucz prywatny SSL w atrybucie ssl_client_certificate i nie umieszczasz prawdziwego certyfikatu SSL w swojej konfiguracji. Konfiguracja Nginx SSL powinna zawierać następujące linie zamiast:

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

Upewnij Certyfikat SSL odpowiada pliku .pem z odpowiednich treści, a klucz plik Certyfikat zawiera plik .key z poprawnymi zawartości zbyt .

Aby wygenerować certyfikat z Origin CA, należy przejść do sekcji Crypto na pulpicie Cloudfalre. Stamtąd kliknij przycisk Utwórz certyfikat w sekcji Certyfikaty pochodzenia. Po wykonaniu kroków w kreatorze zostanie wyświetlone okno umożliwiające pobranie zarówno pliku certyfikatu, jak i pliku klucza. Upewnij się, że umieściłeś je we właściwych plikach i zainstalujesz je na swoim serwerze sieciowym.

Cloudflare Origin CA Certificate and Key

Dalsze czytanie: