Thứ năm, 12/06/2014 | 00:00 GMT+7

Cách cấu hình OCSP Stapling trên Apache và Nginx

Ghim OCSP là một tiện ích mở rộng TLS / SSL nhằm mục đích cải thiện hiệu suất của thương lượng SSL trong khi duy trì quyền riêng tư của khách truy cập. Trước khi tiếp tục với cấu hình, hãy tóm tắt ngắn gọn về cách hoạt động của việc thu hồi certificate . Bài viết này sử dụng các certificate miễn phí do StartSSL cấp để chứng minh.

Hướng dẫn này sẽ sử dụng cấu hình cơ sở cho Apache và Nginx được nêu bên dưới:

Về OCSP

OCSP (Giao thức Trạng thái Chứng chỉ Trực tuyến) là một giao thức để kiểm tra xem certificate SSL đã bị thu hồi hay chưa. Nó được tạo ra để thay thế cho CRL để giảm thời gian thương lượng SSL. Với CRL (Danh sách thu hồi certificate ), trình duyệt download danh sách các số sê-ri certificate đã bị thu hồi và xác minh certificate hiện tại, điều này làm tăng thời gian thương lượng SSL. Trong OCSP, trình duyệt sẽ gửi yêu cầu tới URL OCSP và nhận được phản hồi có chứa trạng thái hợp lệ của certificate . Ảnh chụp màn hình sau đây cho thấy URI OCSP của digitalocean.com.

URI OCSP

Giới thiệu về ghim OCSP

OCSP có hai vấn đề lớn: quyền riêng tư và tải nặng trên server của CA.

Vì 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 certificate nên nó sẽ xâm phạm quyền riêng tư. CA biết trang web nào đang được truy cập và ai đã truy cập trang web đó.

Nếu một trang web HTTPS có nhiều khách truy cập, server OCSP của CA phải xử lý tất cả các yêu cầu OCSP do khách truy cập đưa ra.

Khi ghim OCSP được triển khai, chủ sở hữu certificate ( web server đọc) sẽ truy vấn chính server OCSP và lưu phản hồi vào bộ nhớ cache. Phản hồi này được “ghim” bằng Bắt tay TLS / SSL thông qua phản hồi của phần mở rộng Yêu cầu trạng thái certificate . Do đó, các server của CA không phải chịu gánh nặng về các yêu cầu và các trình duyệt không còn cần phải tiết lộ thói quen duyệt web của user cho bất kỳ bên thứ ba nào.

Kiểm tra hỗ trợ dập ghim OCSP

Ghim OCSP được hỗ trợ trên

  • Server Apache HTTP (> = 2.3.3)
  • Nginx (> = 1.3.7)

Vui lòng kiểm tra version cài đặt của bạn bằng các lệnh sau trước khi tiếp tục.

Apache:

apache2 -v 

Nginx:

nginx -v 

User CentOS / Fedora thay thế apache2 bằng httpd .

Truy xuất gói CA

Truy xuất CA root và certificate của CA trung gian ở định dạng PEM và lưu chúng vào một file duy nhất. Điều này dành cho certificate CA root và CA trung gian của StartSSL.

cd /etc/ssl wget -O - https://www.startssl.com/certs/ca.pem https://www.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null 

Nếu CA của bạn cung cấp certificate ở định dạng DER, hãy chuyển đổi chúng sang PEM. Ví dụ: DigiCert cung cấp certificate ở định dạng DER. Để download và chuyển đổi sang PEM, hãy sử dụng các lệnh sau:

cd /etc/ssl wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVCA-1.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null 

Cả hai bộ lệnh đều sử dụng tee để ghi vào file , vì vậy bạn có thể sử dụng sudo tee nếu đăng nhập với quyền user không phải root.

Cấu hình OCSP Stapling trên Apache

Chỉnh sửa file server ảo SSL và đặt các dòng này bên trong chỉ thị <VirtualHost></VirtualHost> .

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf 
SSLCACertificateFile /etc/ssl/ca-certs.pem SSLUseStapling on 

Vị trí bộ nhớ cache phải được chỉ định bên ngoài <VirtualHost></VirtualHost> .

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf 
SSLStaplingCache shmcb:/tmp/stapling_cache(128000) 

Nếu bạn làm theo bài viết này để cài đặt các trang web SSL trên Apache, file server ảo sẽ có dạng như sau:

/etc/apache2/sites-enabled/example.com-ssl.conf

<IfModule mod_ssl.c>     SSLStaplingCache shmcb:/tmp/stapling_cache(128000)     <VirtualHost *:443>              ServerAdmin webmaster@localhost             ServerName example.com             DocumentRoot /var/www              SSLEngine on              SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt             SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key              SSLCACertificateFile /etc/ssl/ca-certs.pem             SSLUseStapling on     </VirtualHost> </IfModule> 

Thực hiện configtest để kiểm tra lỗi.

apachectl -t 

Reload nếu Syntax OK được hiển thị.

service apache2 reload 

Truy cập trang web trên IE (trên Vista trở lên) hoặc Firefox 26+ và kiểm tra log lỗi.

tail /var/log/apache2/error.log 

Nếu file được xác định trong chỉ thị SSLCACertificateFile bị thiếu, một certificate có lỗi tương tự như sau sẽ hiển thị.

[Fri May 09 23:36:44.055900 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate! [Fri May 09 23:36:44.056018 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02235: Unable to configure server certificate for stapling 

Nếu không có lỗi như vậy được hiển thị, hãy chuyển sang bước cuối cùng.

Cấu hình ghim OCSP trên Nginx

Chỉnh sửa file server ảo SSL và đặt các lệnh sau bên trong phần server {} .

sudo nano /etc/nginx/sites-enabled/example.com.ssl 
ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/ssl/private/ca-certs.pem; 

Nếu bạn đã làm theo bài viết này để cài đặt server SSL trên Nginx, file server ảo hoàn chỉnh sẽ giống như sau:

/etc/nginx/sites-enabled/example.com.ssl

server {          listen   443;         server_name example.org;          root /usr/share/nginx/www;         index index.html index.htm;          ssl on;         ssl_certificate /etc/nginx/ssl/example.org/server.crt;         ssl_certificate_key /etc/nginx/ssl/example.org/server.key;          ssl_stapling on;         ssl_stapling_verify on;         ssl_trusted_certificate /etc/ssl/private/ca-certs.pem; } 

Thực hiện configtest để xem mọi thứ là chính xác.

service nginx configtest 

Sau đó reload dịch vụ nginx .

service nginx reload 

Truy cập trang web trên IE (trên Vista trở lên) hoặc Firefox 26+ và kiểm tra log lỗi.

tail /var/log/nginx/error.log 

Nếu file được xác định trong ssl_trusted_certificate bị thiếu certificate , một lỗi tương tự như sau sẽ hiển thị:

2014/05/09 17:38:16 [error] 1580#0: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: ocsp.startssl.com 

Nếu không có lỗi như vậy được hiển thị, hãy chuyển sang bước tiếp theo.

Kiểm tra ghim OCSP

Hai phương pháp sẽ được giải thích để kiểm tra xem dập ghim OCSP có hoạt động hay không - công cụ dòng lệnh openssl và kiểm tra SSL tại Qualys.

Lệnh OpenSSL

Đầu ra của lệnh này hiển thị một phần cho biết web server của bạn có phản hồi với dữ liệu OCSP hay không. Ta grep phần cụ thể này và hiển thị nó.

echo QUIT | openssl s_client -connect www.digitalocean.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update' 

Thay thế www.digitalocean.com bằng domain của bạn. Nếu dập ghim OCSP hoạt động bình thường, kết quả sau sẽ hiển thị.

OCSP response: ====================================== OCSP Response Data:     OCSP Response Status: successful (0x0)     Response Type: Basic OCSP Response     Version: 1 (0x0)     Responder Id: 4C58CB25F0414F52F428C881439BA6A8A0E692E5     Produced At: May  9 08:45:00 2014 GMT     Responses:     Certificate ID:       Hash Algorithm: sha1       Issuer Name Hash: B8A299F09D061DD5C1588F76CC89FF57092B94DD       Issuer Key Hash: 4C58CB25F0414F52F428C881439BA6A8A0E692E5       Serial Number: 0161FF00CCBFF6C07D2D3BB4D8340A23     Cert Status: good     This Update: May  9 08:45:00 2014 GMT     Next Update: May 16 09:00:00 2014 GMT 

Không có kết quả nào được hiển thị nếu dập ghim OCSP không hoạt động.

Kiểm tra SSL trực tuyến Qualys

Để kiểm tra điều này trực tuyến, hãy truy cập trang web này và nhập domain của bạn. Sau khi kiểm tra hoàn tất, hãy kiểm tra trong phần Chi tiết giao thức .

Báo cáo SSL của Qualys

Đọc thêm


Tags:

Các tin liên quan

Cách tạo chứng chỉ SSL trên Apache cho Ubuntu 14.04
2014-04-23
Cách thiết lập server ảo Apache trên Ubuntu 14.04 LTS
2014-04-22
Cách cài đặt Apache Tomcat 7 trên Ubuntu 14.04 qua Apt-Get
2014-04-18
Cách thiết lập server ảo Apache trên Ubuntu 13.10
2014-04-16
Cách chạy Django với mod_wsgi và Apache với môi trường Python virtualenv trên VPS Debian
2014-04-10
Cách di chuyển cấu hình Apache của bạn từ cú pháp 2.2 sang 2.4.
2014-03-31
Cách sử dụng server Apache HTTP dưới dạng Reverse-Proxy bằng cách sử dụng extension mod_proxy
2014-02-14
Cách cài đặt và cấu hình Apache Tomcat trên server Debian
2014-01-07
Cách cài đặt và quản lý Apache Qpid
2013-12-30
Cách chuyển từ web server Apache sang Nginx trên VPS Ubuntu
2013-12-17