Hãy mã hóa - nginx - ghim OCSP


11

Tôi muốn kích hoạt tính năng ghim OCSP trong máy chủ nginx của mình. Tôi đang sử dụng

  • phiên bản nginx: nginx / 1.6.2
  • debian
  • Chứng chỉ mã hóa

Tôi thực sự chưa có kinh nghiệm trong vấn đề này, vì vậy nó có thể là một vấn đề tầm thường.

Đây là cấu hình bảo mật nginx của tôi

    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;

Ở đây cấu hình bảo mật trang web / máy chủ của tôi:

    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;

Tôi đọc rằng điều này sẽ đủ để kích hoạt tính năng dập ghim OCSP.

Nhưng nếu tôi kiểm tra nó bằng cách sử dụng

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

Tôi sẽ nhận được phản hồi như sau:

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

Đặc biệt

OCSP response: no response sent

Tôi đang làm gì sai?

Phân cấp chứng chỉ:

  • Root DST CA X3
    • Cơ quan mã hóa hãy X1
      • myexample.org

BIÊN TẬP:

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

Các chứng chỉ trong chuỗi của bạn có URL OCSP được đặt trong tiện ích mở rộng AIA của chúng không?
garethTheRed

1
@Braiam - Bạn đã liên kết với tài liệu chính xác chưa? Không có đề cập đến OCSP trong đó. Cho ai +1 bình luận đó - bạn đã đọc nó trước chưa?
garethTheRed

@garethTheRed Tôi đã chỉnh sửa bài đăng của mình để thêm URL OCSP từ chứng chỉ.
ST-DDT

@Braiam Tôi đã đọc tài liệu được liên kết của bạn và AFAICT Tôi đã làm mọi thứ đúng như mô tả trong đó. (Ngoại trừ cronjob, không liên quan đến bảo mật cũng như câu hỏi của tôi)
ST-DDT

Tuyệt quá! Nó đây rồi. Thật không may, tôi đã không xử lý nginx nhiều, vì vậy thực sự không thể giúp bạn định cấu hình nó. Liệu URL có thực sự là điều đầu tiên xuất hiện trong đầu hay không. Ý nghĩ khác chỉ là của bạn fullchain.pemchain.pemcác tập tin - chúng có giống nhau không? Không nên ssl_trusted_certificatechỉ thị cũng sử dụng các fullchain.pemtập tin?
garethTheRed

Câu trả lời:


10

Theo thiết lập nginx tiêu chuẩn, bạn không cần chỉ định ssl_trusted_certificatechuỗi. Những điều sau đây là đủ:

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;

Xem ở đây để biết thêm bối cảnh.


Thật tuyệt, điều này đơn giản hóa nginx conf của tôi và cũng hoạt động tốt!
Shautieh

Tôi vẫn gặp lỗi khi kiểm tra nó với trang web này ssldecoder.org có gợi ý nào không?
Alexander Schranz

đã khắc phục sự cố khi bạn có nhiều ssl, bạn cần kích hoạt nó trong tất cả các khối khác, nginx sẽ thất bại trong âm thầm.
Alexander Schranz

9

Tôi tìm thấy giải pháp dựa trên hướng dẫn tôi tìm thấy ở đó :

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

và thêm nó vào cấu hình trang web / máy chủ của bạn

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

Tải lại cấu hình của bạn

QUAN TRỌNG: Mở trình duyệt của bạn và truy cập trang web của bạn một lần.

Sau đó, bạn có thể kiểm tra máy chủ của mình cục bộ với cmd này:

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

Bạn rất có thể sẽ nhận được một phản hồi hợp lệ như thế này

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

Đừng lo lắng nếu bạn nhận được một

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

ở phía dưới cũng vậy , chứng chỉ mã hóa Let vẫn chưa có trong kho lưu trữ chứng chỉ tin cậy mặc định. (Tôi không có nhiều kinh nghiệm về ssl, vì vậy tôi có thể sai)

Lỗi sẽ không hiển thị nếu bạn thực thi cmd sau trên máy chủ:

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

Sau đó, bạn có thể kiểm tra máy chủ của mình bằng cách sử dụng:

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

Xin lưu ý rằng ngay bây giờ các bản sửa lỗi OCSP sẽ không được chọn bởi các bài kiểm tra ssllabs. Tôi cho rằng điều này là do chứng chỉ mã hóa Let vẫn chưa có trong kho lưu trữ chứng chỉ tin cậy mặc định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.