Let 'encrypt - nginx - Pinzatura OCSP


11

Vorrei abilitare la pinzatura OCSP nel mio server nginx. sto usando

  • versione nginx: nginx / 1.6.2
  • debian
  • Crittografiamo il certificato

Sono davvero inesperto in questa materia, quindi potrebbe essere un problema banale.

Ecco la mia configurazione di sicurezza 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;

Qui la mia configurazione di sicurezza del sito / server:

    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;

Ho letto che questo sarebbe sufficiente per abilitare la pinzatura OCSP.

Ma se lo provo usando

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

Riceverò la seguente risposta:

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

Particolarmente

OCSP response: no response sent

Che cosa sto facendo di sbagliato?

Gerarchia dei certificati:

  • Root dell'ora legale CA X3
    • Crittografiamo l'autorità X1
      • myexample.org

MODIFICARE:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/

I certificati nella tua catena hanno l'URL OCSP impostato nella loro estensione AIA?
garethTheRed,

1
@Braiam - hai collegato il documento corretto? Non c'è una menzione di OCSP lì dentro. A chiunque faccia +1 su quel commento, l'hai letto per primo?
garethTheRed,

@garethTheRed Ho modificato il mio post per aggiungere l'URL OCSP dal certificato.
ST-DDT,

@Braiam Ho letto il tuo documento collegato e AFAICT ho fatto tutto come descritto correttamente. (Tranne il cronjob, che non è rilevante né per la sicurezza né per la mia domanda)
ST-DDT

Grande! È lì. Sfortunatamente, non ho trattato molto di nginx, quindi non posso davvero aiutarti a configurarlo. Se l'URL fosse effettivamente presente, è stata la prima cosa che mi è venuta in mente. L'unico altro pensiero è tuo fullchain.peme dei chain.pemfile: sono gli stessi? La ssl_trusted_certificatedirettiva non dovrebbe usare anche il fullchain.pemfile?
garethTheRed,

Risposte:


10

Dopo la configurazione standard di nginx, non è necessario specificare una ssl_trusted_certificatecatena. Quanto segue dovrebbe essere sufficiente:

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;

Vedi qui per ulteriore contesto.


Bene, questo semplifica la mia configurazione di nginx e funziona altrettanto bene!
Shautieh,

Ricevo ancora un errore quando lo collaudo con questo sito ssldecoder.org qualche suggerimento?
Alexander Schranz,

risolto il problema quando hai più SSL devi abilitarlo in tutti i blocchi altrimenti nginx fallirà silenziosamente.
Alexander Schranz,

9

Ho trovato la soluzione in base al tutorial che ho trovato :

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 aggiungilo alla configurazione del tuo sito / server

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

Ricarica la tua configurazione

IMPORTANTE: aprire il browser e accedere alla pagina Web una volta.

Quindi puoi testare il tuo server localmente con questo cmd:

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

Molto probabilmente otterrai una risposta valida come questa

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

Non preoccuparti se ottieni un

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

in fondo , così , il certificato crittografare il Let non è ancora in difetto di fiducia archivi di certificati. (Non ho molta esperienza SSL, quindi potrei sbagliarmi)

L'errore non verrà visualizzato se si esegue il cmd seguente sul server:

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

Dopodiché puoi testare il tuo server usando:

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

Tieni presente che in questo momento le risposte OCSP non verranno rilevate dai test ssllabs. Presumo che ciò sia dovuto al fatto che il certificato Let's encrypt non è ancora presente negli archivi certificati certificati predefiniti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.