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:
- Cách cài đặt nhiều certificate SSL trên một IP với Apache trên Ubuntu 12.04
- Cách cài đặt nhiều certificate SSL trên một IP với Nginx trên Ubuntu 12.04
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.
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 .
Đọc thêm
- Bài viết của Mozilla về ghim OCSP - http://en.wikipedia.org/wiki/OCSP_stapling
- Bài viết trên Wikipedia về ghim OCSP - http://en.wikipedia.org/wiki/OCSP_stapling
Các tin liên quan
Cách tạo chứng chỉ SSL trên Apache cho Ubuntu 14.042014-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