Configurar o NGINX + CloudFlare + SSL

Então.....

tenho uma aplicação de nós a correr num servidor na porta 8080 e estou a tentar permitir que funcione sobre o SSL usando o NGINX e o CloudFlare. Observe o seguinte...

    O meu hospedeiro está a gerir o Ubuntu 16.04 LTS
  1. estou a usar o SSL Universal de CloudFlare (nível livre)
  2. Tenho o meu hospedeiro de teste DNS configurado como test.company.com
  3. Copiei a origem de CloudFlare, retira o cert deste post para a minha caixa de testes. /etc/nginx / certs

... a minha configuração anterior da NGINX parecia...

server {
    listen 80;

    location / {
        proxy_pass http://localhost:8080;
    }
}
Parece que agora...

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

...Eu segui o exemplo aqui e o link que ele fornece Aqui e eu sou cético que tudo acima é necessário (Eu sou um minimalista). Sempre que executar sudo nginx -t, Continuo a obter erros em torno do ssl_ certificate e do ssl_ certificate_key que não estão a ser indicados. Eu não posso descobrir como baixar os arquivos necessários de CloudFlare e do que eu entende, acho que não devia precisar.

Se eu tentar reutilizar o certificado de origem CloudFlare como tanto o ssl_ certificate como o ssl_ certificate_key, eu fico com o erro 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)

Estou confiante de que é possível criar o meu próprio certificado assinado, mas estou a planear usar esta estratégia, eventualmente, para criar máquinas de produção. Qualquer ajuda que me aponte na direcção certa é muito apreciada.

Author: Lane, 2016-12-19

1 answers

Parece que estás a usar o serviço CA de origem da Cloudflare, boa!

O problema parece que colocou a sua chave privada SSL no atributo {[[0]} e não colocou o seu verdadeiro certificado SSL na sua configuração. A sua configuração de SSL Nginx deverá conter as seguintes linhas em alternativa:

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

Certifique-se que o certificado SSL corresponde ao.Arquivo PEM com o conteúdo correto, e o arquivo Chave do certificado contém o .Ficheiro da chave com o conteúdo correcto muito.

Para gerar um certificado com a AC de origem, navegue até à secção Crypto do painel Cloudfalre. A partir daí, clique no botão Criar Certificado na seção Certificados de origem. Assim que completar os passos do assistente, irá ver uma janela que lhe permite transferir tanto o ficheiro do certificado como o ficheiro da chave. Certifique-se de colocá-los nos arquivos corretos e instalá-los em seu servidor web.

Cloudflare Origin CA Certificate and Key

Além disso leitura:

 7
Author: mjsa, 2017-02-23 14:49:17