OCSP stapling是Https優化方案之一,將原本需要客戶端實時發起的 OCSP 請求轉嫁給服務端;
- 在線證書狀態協議(Online Certificate Status Protocol),簡稱 OCSP,是一個用於獲取 X.509 數字證書撤銷狀態的網際協議,在 RFC 6960 中定義。OCSP 用於檢驗證書合法性,查詢服務一般由證書所屬 CA 提供。OCSP 查詢的本質,是一次完整的 HTTP 請求加響應的過程,這中間涵括的 DNS 查詢、建立 TCP 連接、Web 端工作等步驟,都將耗費更多時間,使得建立 TLS 花費更多時長。
- OCSP存在隱私和性能問題。
1、瀏覽器直接去請求第三方CA(Certificate Authority, 數字證書認證機構),會暴露網站的訪客(CA 機構會知道哪些用戶在訪問我們的網站);
2、瀏覽器進行OCSP查詢會降低HTTPS性能(訪問我們的網站會變慢) OCSP實時查詢會增加客戶端的性能開銷。
后來,OCSP Stapling 出現了。將原本需要客戶端實時發起的 OCSP 請求轉嫁給服務端,Web 端將主動獲取 OCSP 查詢結果,並隨證書一起發送給客戶端,以此讓客戶端跳過自己去尋求驗證的過程,提高 TLS 握手效率。 可以提高HTTPS性能。
在線校驗
- 此方式需要支持服務器能夠主動訪問證書校驗服務器才能生效,並且在每次重啟nginx的時候會主動請求一次,如果網絡不通會導致nginx啟動緩慢。
server { listen 443 ssl; server_name xx.xx.com; index index.html index.htm index.jsp; ssl_certificate server.pem;#證書的.cer文件路徑 ssl_certificate_key server-key.pem;#證書的.key文件 # 開啟 OCSP Stapling ---當客戶端訪問時 NginX 將去指定的證書中查找 OCSP 服務的地址, 獲得響應內容后通過證書鏈下發給客戶端。 ssl_stapling on; ssl_stapling_verify on;# 啟用OCSP響應驗證,OCSP信息響應適用的證書 ssl_trusted_certificate /path/to/xxx.pem;#若 ssl_certificate 指令指定了完整的證書鏈,則 ssl_trusted_certificate 可省略。 resolver 8.8.8.8 8.8.4.4 216.146.35.35 216.146.36.36 valid=60s;#添加resolver解析OSCP響應服務器的主機名,valid表示緩存。 resolver_timeout 2s;# resolver_timeout表示網絡超時時間
人工更新
為了緩存的更新時間更可加控,你也可以人工負責更新文件內容。利用 NginX 的 ssl_stapling_file
指令直接將 OCSP 響應存成文件,NginX 從文件獲取OCSP響應而無需從服務商拉取,將其隨證書下發而不實時查詢。
server { listen 443 ssl; server_name xx.xx.com; index index.html index.htm index.jsp; ssl_certificate server.pem;#證書的.cer文件路徑 ssl_certificate_key server-key.pem;#證書的.key文件 # 開啟 OCSP Stapling ---當客戶端訪問時 NginX 將去指定的證書中查找 OCSP 服務的地址, 獲得響應內容后通過證書鏈下發給客戶端。 ssl_stapling on; ssl_stapling_file /xxx/xxx/stapling_file.ocsp; ssl_stapling_verify on;# 啟用OCSP響應驗證,OCSP信息響應適用的證書 ssl_trusted_certificate /path/to/xxx.pem;#若 ssl_certificate 指令指定了完整的證書鏈,則 ssl_trusted_certificate 可省略。
喜歡這篇文章?歡迎打賞~~