字體:  

OCSP Stapling Nginx 設定 - 加速 https 驗證 SSL 的載入時間

dyson6 發表於: 2017-9-08 08:59 來源: ADJ網路控股集團


自從全球開始推網站必須要支援 SSL (https) 加密之後,用了一陣子發現,只要用 HTTPS 打開個人網站,就有一定的機率會很慢,大約要等待 30 秒左右頁面才會下載完成,奇怪的是只要成功打開過一次頁面,接下來的頁面就不會再卡這麼久了,我一直懷疑是 SSL 的關係,但又沒辦法肯定。

Chrome console tool 是一個很強力的工具,它可以檢測整個網頁的傳輸過程,我使用它來測試我的網站連線資訊,先打開 chrome console toole ,然後再用 HTTPS 連到我的個人網站,結果在 Console Tool 中看到 " initial connection SSL" 的等待時間很長,甚至會超過 30 秒,我幾乎可以肯定這個 SSL 連線一定有問題。

OCSP 是什麼呢? 他存在的目地是為了加快 SSL certificate 驗証的效率,OCSP 是指我們 server 端暫存一份從 certificate authority 給我們的憑証的資料,當 user 透過瀏覽器要跟 Server 做 SSL handshake 時, Server 端可以立馬用這個暫存的 Certificate 回傳給 User ,告知 user 我們家的憑証狀態 ,以便加快 SSL handshake 的速度,如果沒有 OCSP ,那麼 User 要再發一次 Request 到 CA 端,跟發憑証商要你的 Certificate 狀態,因為我的網站沒有實作 OCSP ,所以當 client 拿到 OCSP 驗証結果時,就會轉向 CA 商要求憑証,造成網頁變得很慢很慢。

如何檢查你的 OCSP 是否有開啟

https://www.digicert.com/help/ 這個網站可以幫助我們檢查網站是否有支援 OCSP ,例如輸入網站 domain: www.winho.com.tw,結果得到 OCSP Staple: Not Enabled ,代表我的網站不支援 OCSP 。



如果出現Good 的訊息就是有成功


另外我們也可以用 Mac Command line 的方式來檢查是否有啟用 OCSP,如果看到 "OCSP response: no response sent" ,就代表 ocsp 沒有成功。

QUOTE:


# openssl s_client -connect www.winho.com.tw:443 -servername www.winho.com.tw -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"


啟用 OCSP on Nginx Server

啟用 OCSP 的方式很簡單,你只要在 conf 加入以下設定,然後再重啟 nginx 即可。

Add the following directives INSIDE the “server { }” block:

QUOTE:


#Enable OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;


這樣就可以囉~

參考資料:
https://www.digicert.com/ssl-support/nginx-enable-ocsp-stapling-on-server.htm
https://www.puritys.me/docs-blog/article-369-Apache-%E5%95%9F%E7%94%A8-OCSP-%EF%BC%8C%E5%8A%A0%E5%BF%AB%E7%B6%B2%E7%AB%99%E9%80%9F%E5%BA%A6.html