因為某些瀏覽器的原因,可能我們需要為證書配置 ocsp 。
花了一下午進行除錯和整理,現在已經成功,現在寫下心得。
證書是在 positivessl 購買的,也就是現在的 comodo 證書。
如何生成 csr 並生成金鑰,並購買證書,因為教程比較多,這裡就不在闡述了。
doamin.crt 也就是我們的網域名稱**證書
domain.ca-bundle **證書,包含根證書和中間證書。
我們來看一下該頁面對中間證書的介紹,因為我們使用的是個人網域名稱申請,所以這裡就只看 domain validation 這一欄
domain validation
[download] sectigo rsa domain validation secure server ca [ intermediate ] 為中間證書
[download ] usertrust rsa root xsigned using aaa ca [ cross signed ] 為交叉簽名
(or)
[download] sectigo rsa dv bundle [ intermediate + cross signed ] 顧名思義,就是以上兩個的合併檔案。
cat domain.crt sectigorsadomainvalidationsecureserverca.crt usertrustrsaaaaca.crt > fullchain.crt
不過在 comodo 早版本之前,購買的證書曾經碰到過三個中間證書,合併規則如下:
cat domain.crt sectigorsadomainvalidationsecureserverca.crt usertrustrsaaaaca.crt aaacertificateservices.crt > fullchian.crt
因為 aaacertificateservices.crt 這個為舊版本的中間證書:
好了,拿到證書的檔案之後,我們開始測試並使用 ocsp:
檢視csr檔案資訊命令:
openssl req -in domain.csr -noout -text
檢視證書檔案資訊命令,csr 為申請網域名稱之前自己生成的:
openssl x509 -in site.crt -noout -text
檢視證書fingerprint的命令:
openssl x509 -in domain.crt -noout -fingerprint
openssl x509 -in domain.crt -noout -subject
這個命令用來檢查證書的主體,可以檢視到證書的域,在這裡我們可以查到 comodo 的 ocsp **為:
openssl x509 -in domain.crt -noout -ocsp_uri
接下來我們驗證 ocsp 結果,在這裡一直卡在了乙個錯誤:
openssl ocsp -issuer domain.ca-bundle -cert domain.crt -no_nonce -text -url -text -respout stapling_ocsp
返回錯誤資訊如下:
ocsp request data:
version: 1 (0x0)
requestor list:
certificate id:
hash algorithm: sha1
issuer name hash: 430bd20e4f137a1a6c918f24e5da7e324d4733c8
issuer key hash: 8d8c5ec454ad8ae177e99bf99b05e1b8018d61e1
serial number: e5cae551d10b808ba44aa90a85e0f65f
responder error: unauthorized (6)
後來參考 為 openssl 加上 host
openssl ocsp -issuer domain.ca-bundle.crt -cert domain.crt -no_nonce -url -header "host" "ocsp.sectigo.com"
還是報錯如下:
response verify failure
140196948916112:error:27069076:ocsp routines:ocsp_basic_verify:signer certificate not found:ocsp_vfy.c:92:
www_luckfile_com.crt: good
this update: dec 2 20:04:31 2020 gmt
next update: dec 9 20:04:31 2020 gmt
這期間測試過很多方法,包括更換 ocsp **,以及**中的兩個證書檔案,都不行
知道無意間搜尋到一篇文章才知道要使用如下格式,這裡的 sectigorsadvbundle.pem 不用管,等同於上面的 domain.ca.bundle 中間證書
重點是 -verify_other fullchain.pem 這個,也就是我們的完整證書鏈,也就是 網域名稱證書+中間證書的合併檔案,也就是 nginx 裡的 ssl_certificate 配置檔案
openssl ocsp -respout ocsp_sta.oscp -issuer sectigorsadvbundle.pem -cert domain.crt -no_nonce -url -header "host" "ocsp.sectigo.com" -verify_other fullchain.pem
返回如下,並生成 ocsp_sta.oscp 檔案:
response verify ok
www_luckfile_com.crt: good
this update: dec 2 20:04:31 2020 gmt
next update: dec 9 20:04:31 2020 gmt
ps:我直接在終端 cat 了 ocsp_sta 檔案,然後終端工具就花屏了
接下來進行測試:
openssl s_client -connect 127.0.0.1:443 -servername domain.com -status -tl***tdebug < /dev/null 2>&1 | grep -i "ocsp response"
當然也可以去除 | grep -i "ocsp response" 來檢視返回的詳細資訊
返回如下證明成功:
然後重 重啟 nginx ,reload 不行,必須 restart
關於除錯的建議
使用所有可用資料來構造你的假設。不斷提煉產生錯誤的測試用例。在自己的單元測試族中測試 借助可以獲得的任何工具。用不同的方式重現錯誤。通過產生更多的資料來構造更多的假設。利用證偽假設的測試結果。用頭腦風暴的方式找出可能的假設。在桌上放乙個記事本,把需要嘗試的事情列出來。縮小被懷疑有問題的 區域。對之前...
關於Nginx的記錄
看了一些nginx教程,做個記錄。nginx是什麼?nginx engine x 是一款輕量級的web伺服器 反向 伺服器及電子郵件 伺服器。nginx能夠做些什麼?nginx多用於通過反向 實現負載均衡,它能夠代為收發請求和響應 1 nginx可以針對客戶機不同的請求進行 到配置的站點,比如將ht...
nginx在windows系統的安裝和部署
解壓完的壓縮檔案中不包含上圖中的img資料夾,這是我自建的存放的資料夾 3.nginx配置檔案在 nginx 1.8.0 conf nginx.conf 在預設的檔案中新增上 靜態檔案 server 這個是自己定義的檔案位址 4.點選nginx.exe執行,在瀏覽器中輸入127.0.0.1 或者 l...