Nginx之OCSP stapling配置


摘要: 正確地配置OCSP stapling, 可以提高HTTPS性能。


什么是OCSP stapling?

OCSP的全稱是Online Certificate Status Protocol,即在線證書狀態協議。顧名思義,它是一個用於檢查證書狀態的協議,瀏覽器使用這個協議來檢查證書是否被撤銷。使用Chrome瀏覽器查看https://www.fundebug.com的證書詳情,可以看到OCSP的查詢地址:


Fundebug使用的是Let’s Encrypt的免費證書,其OCSP查詢地址是http://ocsp.int-x3.letsencrypt.org/,瀏覽器需要發送請求到這個地址來驗證證書狀態。

OCSP存在隱私性能問題。一方面,瀏覽器直接去請求第三方CA(Certificate Authority, 數字證書認證機構),會暴露網站的訪客(Let’s Encrypt會知道哪些用戶在訪問Fundebug);另一方面,瀏覽器進行OCSP查詢會降低HTTPS性能(訪問Fundebug會變慢)。

為了解決OCSP存在的2個問題,就有了OCSP stapling。由網站服務器去進行OCSP查詢,緩存查詢結果,然后在與瀏覽器進行TLS連接時返回給瀏覽器,這樣瀏覽器就不需要再去查詢了。這樣解決了隱私性能問題。

檢測OCSP stapling

SSL Labs能夠對開啟HTTPS的網站的SSL配置進行全面分析,可以檢測OCSP stapling的狀態。

www.fundebug.com進行檢查,會發現OCSP stapling是開啟的:


kiwenlau.com進行檢查,會發現OCSP stapling是關閉的:


配置OCSP stapling

在查詢Nginx日志時,我發現了這樣的報錯信息:

2018/02/27 02:58:11 [warn] 10#10: no resolver defined to resolve ocsp.int-x3.letsencrypt.org while requesting certificate status, responder: ocsp.int-x3.letsencrypt.org, certificate: "/etc/letsencrypt/live/www.fundebug.com/fullchain.pem"

可知,是resolver屬性木有配置導致的。resolver屬性用於指定DNS服務器地址, OCSP查詢地址ocsp.int-x3.letsencrypt.org需要解析為IP地址。

根據Nginx文檔,最好使用本地DNS服務,可以防止DNS欺騙(DNS spoofing)。使用公共的DNS服務,例如Google Public DNS(8.8.8.8和8.8.4.4 ),都存在安全隱患。

To prevent DNS spoofing, it is recommended configuring DNS servers in a properly secured trusted local network.

因此,resolver最好配置為127.0.0.1,即本地DNS服務:

resolver 127.0.0.1;

由於本地並沒有DNS服務,因此配置resolver之后Nginx會出現以下報錯:

2018/02/28 15:35:47 [error] 8#8: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.1:53

這時應該在本地運行一個DNS服務,例如dnsmasq。我們Fundebug所有服務包括Nginx都運行在Docker里面,因此dnsmasq直接運行在Docker里面就好了,這樣省去了安裝與配置的步驟:

sudo docker run -d --name=dnsmasq --net=host --cap-add=NET_ADMIN andyshinn/dnsmasq:2.75 --log-facility=-

Nginx的OCSP stapling完整配置如下:(此處省略了其他無關的配置選項)

http
{
resolver 127.0.0.1;

server
{
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/www.fundebug.com/chain.pem;
}
}

參考


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM