OCSP và ssl_stapling

Khi một ứng dụng nhận nội dung được bảo mật hoặc được ký số từ internet, như các website được bảo mật bằng HTTPS hay phần mềm có chữ ký, nó sẽ phải xác minh xem chứng nhận được sử dụng để bảo mật nội dung như SSL hay chứng nhận xác thực mã này có hợp lệ hay không.

OCSP (Online Certificate Status Protocol) là một giao thức để kiểm tra tình trạng hợp lệ của một chứng thư số SSL ở thời gian thực.

Các ứng dụng như browser sử dụng OCSP sẽ kiểm tra trạng thái của chứng nhận. OCSP sẽ trả lời là “tốt” hay “bị thu hồi”.

OCSP có hai tồn đọng: tính riêng tư và gia tăng tải trên máy chủ truy vấn OCSP của CA.

Việc OCSP yêu cầu trình duyệt liên hệ với CA để xác nhận tính hợp lệ của chứng thư số SSL trên website sẽ làm mất tính riêng tư. CA sẽ biết được những trang web nào đang được truy cập và thông tin của người đang truy cập chúng.

Nếu một trang web HTTPS được rất nhiều khách truy cập, thì máy chủ truy vấn OCSP của CA sẽ phải xử lý tất cả các yêu cầu OCSP được thực hiện bởi trình duyệt của từng khách khách truy cập.

Về OCSP stapling

Khi máy chủ web được cấu hình OCSP stapling hoàn chỉnh, đầu tiên máy chủ sẽ thực hiện truy vấn OCSP đến máy chủ OCSP của CA và lưu trữ kết quả trên bộ nhớ đệm của máy chủ web. Máy chủ web sẽ tự động thực hiện lại quá trình truy vấn OCSP và cập nhật kết quả này sau một khoảng thời gian nhất định. Kết quả truy vấn OCSP này sẽ được được đính kèm trong quá trình thực hiện TLS Handshake giữa trình duyệt và máy chủ web thông qua thuộc tính mở rộng Certificate Status Request. Từ đó trình duyệt có thể sử dụng ngay kết quả kiểm tra tình trạng hợp lệ của chứng thư số SSL mà không cần phải thực hiện truy vấn đến máy chủ OCSP của CA.

Kiểm tra hỗ trợ OCSP stapling

Bạn cần phải kiểm tra phiên bản của nginx để biết có hỗ trợ OCSP stapling hay không. OCSP stapling được hỗ trợ kể từ phiên bản nginx 1.3.7 trở đi.

Bạn gõ lệnh:

nginx -v

Cấu hình nginx cho OCSP stapling

Một cấu hình không đúng sẽ cho kết quả trong /var/log/nginx/error.log

"ssl_stapling" ignored, no OCSP responder URL in the certificate

Gợi ý cho phần SSL của /etc/nginx/default

# Advanced config for NGINX
server_tokens off;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;

# Redirect all HTTP traffic to HTTPS
server {
   listen 80;
   server_name www.domain.com domain.com;
   return 301 https://$host$request_uri;
}

# SSL configuration
server {
   listen 443 ssl default deferred;
   server_name www.domain.com domain.com;
   ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem;
 
   # Improve HTTPS performance with session resumption
   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 5m;
 
   # Enable server-side protection against BEAST attacks
   ssl_prefer_server_ciphers on;
   ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

   # Disable SSLv3
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

   # Diffie-Hellman parameter for DHE ciphersuites
   # $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
   ssl_dhparam /etc/ssl/certs/dhparam.pem;

   # Enable HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";

   # Enable OCSP stapling (http://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox)
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_trusted_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem;
   resolver 8.8.8.8 8.8.4.4 valid=300s;
   resolver_timeout 5s;
}

Ngoài ra có thể dùng Mozilla SSL Configuration Generator giúp tạo cấu hình OCSP stapling cho web server

Let’s Enscrypt chú thích về việc cấu hình SSL cho nginx như sau

This directory contains your keys and certificates.

`privkey.pem` : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem` : will break many server configurations, and should not be used
 without reading further documentation (see link below).

We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.

Comments Off on OCSP và ssl_stapling

Filed under Software

Comments are closed.