Let 'encrypt - nginx - Agrafage OCSP

11

Je voudrais activer l'agrafage OCSP sur mon serveur nginx. j'utilise

  • version nginx: nginx / 1.6.2
  • debian
  • Cryptons le certificat

Je n'ai vraiment aucune expérience dans ce domaine, donc cela pourrait être un problème trivial.

Voici ma configuration de sécurité 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;

Voici ma configuration de sécurité site / serveur:

    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;

J'ai lu que ce serait suffisant pour activer l'agrafage OCSP.

Mais si je le teste en utilisant

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

J'obtiendrai la réponse suivante:

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
---
[...]

Notamment

OCSP response: no response sent

Qu'est-ce que je fais mal?

Hiérarchie des certificats:

  • Racine DST CA X3
    • Encryptons Authority X1
      • monexemple.org

ÉDITER:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/
ST-DDT
la source
Les certificats de votre chaîne ont-ils l'URL OCSP définie dans leur extension AIA?
garethTheRed
1
@Braiam - avez-vous un lien vers le bon document? Il n'y a aucune mention d'OCSP là-dedans. À quiconque a attribué +1 à ce commentaire - l'avez-vous lu en premier?
garethTheRed
@garethTheRed J'ai édité mon message pour ajouter l'URL OCSP du certificat.
ST-DDT du
@Braiam J'ai lu votre document lié et AFAICT j'ai tout fait correctement comme décrit ici. (Sauf pour le cronjob, qui n'est ni pertinent pour la sécurité ni ma question)
ST-DDT
Génial! C'est là. Malheureusement, je n'ai pas beaucoup traité avec nginx, donc je ne peux pas vraiment vous aider à le configurer. Que l'URL soit réellement là était la première chose qui me vint à l'esprit. La seule autre pensée est vos fichiers fullchain.pemet chain.pem- sont-ils les mêmes? La ssl_trusted_certificatedirective ne devrait-elle pas également utiliser le fullchain.pemfichier?
garethTheRed

Réponses:

10

Après la configuration standard de nginx, vous ne devriez pas avoir besoin de spécifier une ssl_trusted_certificatechaîne. Les éléments suivants devraient être suffisants:

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;

Voir ici pour plus de contexte.

Chris
la source
Bien, cela simplifie ma conf nginx et fonctionne aussi bien!
Shautieh
Je reçois toujours une erreur lorsque je le teste avec ce site ssldecoder.org, un indice?
Alexander Schranz
a résolu le problème lorsque vous avez plusieurs SSL, vous devez l'activer dans tous les blocs, sinon nginx échouera silencieusement.
Alexander Schranz
9

J'ai trouvé la solution basée sur le tutoriel j'ai trouvé là - bas :

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

et ajoutez ceci à votre configuration de site / serveur

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

Rechargez votre configuration

IMPORTANT: ouvrez votre navigateur et accédez à votre page Web une fois.

Ensuite, vous pouvez tester votre serveur localement avec cette cmd:

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

Vous obtiendrez très probablement une réponse valide comme celle-ci

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

Ne vous inquiétez pas si vous obtenez un

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

en bas également , le certificat Let's encrypt n'est pas encore dans les magasins de certificats approuvés par défaut. (Je n'ai pas beaucoup d'expérience SSL, donc je peux me tromper)

L'erreur ne s'affichera pas si vous exécutez la cmd suivante sur le serveur:

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

Après cela, vous pouvez tester votre serveur en utilisant:

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

Sachez qu'à l'heure actuelle, les réponses OCSP ne seront pas détectées par les tests ssllabs. Je suppose que c'est parce que le certificat Let's encrypt n'est pas encore dans les magasins de certificats de confiance par défaut.

ST-DDT
la source