Let 'encrypt - nginx - grampeamento OCSP

11

Gostaria de ativar o grampeamento OCSP no meu servidor nginx. estou a usar

  • Versão nginx: nginx / 1.6.2
  • debian
  • Vamos criptografar o certificado

Eu sou realmente inexperiente neste assunto, por isso pode ser uma questão trivial.

Aqui minha configuração de segurança nginx

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/private/dhparams_4096.pem;

Aqui minha configuração de segurança do site / servidor:

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

    # All files have been generated by Let's encrypt
    ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;

    # Everything below this line was added to enable OCSP stapling
    # What is that (generated file) and is that required at all?
    ssl_trusted_certificate /etc/letsencrypt/live/myexample.org/chain.pem;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

Li que isso seria suficiente para permitir o grampeamento OCSP.

Mas se eu testar usando

 openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

Vou receber a seguinte resposta:

TLS server extension "renegotiation info" (id=65281), len=1
0001 - <SPACES/NULS>
TLS server extension "EC point formats" (id=11), len=4
0000 - 03 00 01 02                                       ....
TLS server extension "session ticket" (id=35), len=0
TLS server extension "heartbeat" (id=15), len=1
0000 - 01                                                .
OCSP response: no response sent
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=myexample.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
[...]

Especialmente

OCSP response: no response sent

O que estou fazendo errado?

Hierarquia de certificado:

  • Raiz do horário de verão CA X3
    • Vamos criptografar a autoridade X1
      • myexample.org

EDITAR:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/
ST-DDT
fonte
Os certificados da sua cadeia têm o URL do OCSP definido na extensão AIA?
fácil fazer o download
1
@Braiam - você vinculou ao documento correto? Não há uma menção ao OCSP lá. Para quem marcou esse comentário com +1, você o leu primeiro?
garethTheRed
@garethTheRed Editei minha postagem para adicionar a URL do OCSP do certificado.
ST-DDT
@ Braiam Li o seu documento vinculado e AFAICT Fiz tudo conforme descrito lá corretamente. (Exceto para o cron, que não é nem relevante para a segurança nem a minha pergunta)
ST-DDT
Ótimo! Está lá. Infelizmente, eu não lidei muito com o nginx, então não posso realmente ajudá-lo a configurá-lo. Se a URL estava realmente, foi a primeira coisa que veio à mente. O único outro pensamento é o seu fullchain.peme chain.pemarquivos - eles são os mesmos? A ssl_trusted_certificatediretiva também não deve usar o fullchain.pemarquivo?
GarethTheRed #

Respostas:

10

Após a configuração padrão do nginx, você não precisa especificar uma ssl_trusted_certificatecadeia. O seguinte deve ser suficiente:

ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;

Veja aqui para mais contexto.

Chris
fonte
Bom, isso simplifica o meu nginx conf e funciona da mesma forma!
Shautieh 14/09/16
Ainda recebo um erro ao testá-lo neste site ssldecoder.org alguma dica?
Alexander Schranz 12/10
corrigiu o problema quando você tem vários ssl, precisa habilitá-lo em todos os blocos, caso contrário o nginx falhará silenciosamente.
Alexander Schranz 12/10
9

Encontrei a solução com base no tutorial que encontrei :

cd /etc/ssl/private
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem https://letsencrypt.org/certs/letsencryptauthorityx1.pem https://www.identrust.com/certificates/trustid/root-download-x3.html | tee -a ca-certs.pem> /dev/null

e adicione isso à sua configuração de site / servidor

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

Recarregue sua configuração

IMPORTANTE: Abra seu navegador e acesse sua página da web uma vez.

Então você pode testar seu servidor localmente com este cmd:

openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

Você provavelmente obterá uma resposta válida como esta

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1

Não se preocupe se você receber um

Verify return code: 20 (unable to get local issuer certificate)

na parte inferior , assim , certificado de criptografar os Vamos ainda não está no padrão de confiança armazenamentos de certificados. (Eu não tenho muita experiência com SSL, então posso estar errado)

O erro não será exibido se você executar o seguinte cmd no servidor:

openssl s_client -CApath /etc/ssl/private/ -connect myexample.org:443 -tls1 -tlsextdebug -status

Depois disso, você pode testar seu servidor usando:

https://www.digicert.com/help/

Esteja ciente de que, no momento, as respostas do OCSP não serão atendidas pelos testes do ssllabs. Suponho que isso ocorre porque o certificado Vamos criptografar ainda não está nos armazenamentos de certificados confiáveis ​​padrão.

ST-DDT
fonte