Mari mengenkripsi - nginx - stapel OCSP

11

Saya ingin mengaktifkan penjepret OCSP di server nginx saya. saya menggunakan

  • versi nginx: nginx / 1.6.2
  • debian
  • Mari Enkripsi sertifikat

Saya benar-benar tidak berpengalaman dalam hal ini, jadi itu mungkin masalah sepele.

Di sini konfigurasi keamanan nginx saya

    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;

Di sini konfigurasi keamanan situs / Server saya:

    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;

Saya membaca bahwa ini akan cukup untuk mengaktifkan penjepret OCSP.

Tetapi jika saya mengujinya menggunakan

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

Saya akan mendapatkan respons berikut:

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

Terutama

OCSP response: no response sent

Apa yang saya lakukan salah?

Hirarki sertifikat:

  • DST Root CA X3
    • Mari Enkripsi Otoritas X1
      • myexample.org

EDIT:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/
ST-DDT
sumber
Apakah sertifikat dalam rantai Anda memiliki URL OCSP yang diatur dalam ekstensi AIA mereka?
garethTheRed
1
@Braiam - sudahkah Anda menautkan ke dokumen yang benar? Tidak ada penyebutan OCSP di sana. Kepada siapa pun yang memberi komentar itu +1 - apakah Anda membacanya dulu?
garethTheRed
@garethTheRed Saya telah mengedit posting saya untuk menambahkan URL OCSP dari sertifikat.
ST-DDT
@Braiam Saya telah membaca dokumen Anda yang tertaut dan AFAICT saya melakukan semuanya seperti yang dijelaskan di sana dengan benar. (Kecuali untuk cronjob, yang tidak relevan untuk keamanan atau pertanyaan saya)
ST-DDT
Bagus! Itu disana. Sayangnya, saya belum banyak berurusan dengan nginx, jadi tidak bisa membantu Anda mengkonfigurasinya. Apakah URL itu benar-benar ada atau tidak, ada hal pertama yang muncul di benak saya. Satu-satunya pemikiran lain adalah Anda fullchain.pemdan chain.pemfile - apakah mereka sama? Bukankah seharusnya ssl_trusted_certificatearahan juga menggunakan fullchain.pemfile?
garethTheRed

Jawaban:

10

Mengikuti pengaturan nginx standar, Anda tidak perlu menentukan ssl_trusted_certificaterantai. Berikut ini harus cukup:

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;

Lihat di sini untuk konteks lebih lanjut.

Chris
sumber
Bagus, ini menyederhanakan nginx conf saya dan berfungsi dengan baik!
Shautieh
Saya masih mendapatkan kesalahan saat mengujinya dengan situs ini ssldecoder.org ada petunjuk?
Alexander Schranz
Apakah memperbaiki masalah ketika Anda memiliki beberapa ssl yang Anda butuhkan untuk mengaktifkannya di semua blok lain nginx akan gagal diam-diam.
Alexander Schranz
9

Saya menemukan solusinya berdasarkan tutorial yang saya temukan di sana :

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

dan tambahkan ini ke konfigurasi situs / server Anda

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

Muat ulang konfigurasi Anda

PENTING: Buka browser Anda dan akses halaman web Anda satu kali.

Kemudian Anda dapat menguji server Anda secara lokal dengan cmd ini:

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

Kemungkinan besar Anda akan mendapatkan respons yang valid seperti ini

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

Jangan khawatir jika Anda mendapatkan

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

di bagian bawah juga , sertifikat enkripsi Mari belum di toko sertifikat tepercaya default. (Saya tidak punya banyak pengalaman ssl, jadi saya mungkin salah)

Kesalahan tidak akan muncul jika Anda menjalankan cmd berikut di server:

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

Setelah itu Anda dapat menguji server Anda menggunakan:

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

Ketahuilah bahwa saat ini respons OCSP tidak akan diambil oleh tes ssllab. Saya berasumsi ini karena sertifikat enkripsi Mari belum di toko sertifikat tepercaya default.

ST-DDT
sumber