2016-12-19 2 views
7

SO ...Настройка NGINX + CloudFlare + SSL

У меня есть приложение, узел, работающий на сервере на порт 8080, и я пытаюсь позволил ему работать над SSL с использованием NGINX и CloudFlare. Обратите внимание на следующее ...

  1. Мой хозяин работает в Ubuntu 16.04 LTS
  2. настоящее время я использую CloudFlare Универсальной SSL (свободный уровень)
  3. У меня есть тест узла настройки DNS в качестве test.company.com
  4. Я скопировал CloudFlare происхождения тянуть серт от this пост в моей тестовой приставке/и т.д./Nginx/сертификаты

... моя предыдущая конфигурация 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 и я сомневаюсь, что все выше требуется (I» м минималистский). Всякий раз, когда я запускаю 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)

Я уверен, что можно создать свой собственный самостоятельно подписанный сертификат, но я Я планирую использовать эту стратегию, чтобы в конечном итоге развернуть производственные машины. Любая помощь, направленная на меня в правильном направлении, очень ценится.

ответ

1

Похоже, вы пользуетесь сервисом CA облачной службы Cloudflare, хорошо!

Проблема заключается в том, что вы поместили свой закрытый ключ SSL в атрибут ssl_client_certificate и не поместите свой настоящий сертификат SSL в свою конфигурацию. Конфигурация SSL Nginx должен содержать следующие строки вместо:

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

Убедитесь сертификат SSL соответствует файлу .pem с правильным содержанием, и файл ключа сертификата содержит файл .KEY с правильным содержимым слишком ,

Чтобы создать сертификат с центром происхождения, перейдите в раздел Crypto панели мониторинга Cloudfalre. Оттуда нажмите кнопку «Создать сертификат» в разделе «Сертификаты происхождения». После того, как вы выполните шаги в мастере, вы увидите окно, которое позволяет загружать как файл сертификата, так и файл ключа. Убедитесь, что вы поместили их в правильные файлы и установили их на свой веб-сервер.

Cloudflare Origin CA Certificate and Key

Дальнейшее чтение: