Nginx 關於 OCSP 的除錯部署

2021-10-11 08:52:30 字數 4042 閱讀 9859

因為某些瀏覽器的原因,可能我們需要為證書配置 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...