Windows下IIS部署自建CA證書進行雙向認證的過程

济南小老虎發表於2024-05-14

Windows下IIS部署自建CA證書進行雙向認證的過程


背景

上週寫shell 批次生成了 99個客戶端證書.
週六正常搬磚日想掛載到IIS上面實現雙向認證.
發現有坑.  和部門裡專門搞安全的小帥搞了好久也沒搞定.

晚上著急回家給boss說懷疑是IIS10有坑導致的.
周天在家一遍教孩子數學, 一邊嘗試了下.發現有一定機率可以改好.

但是本著忘性比花錢還要快的無奈, 還是手工記錄一下.

Windows2008r2的處理過程

1. 將openssl 生成的證書放到本地.
2. 開啟IIS cmd -> inetmgr
   在機器名的位置處: IIS 分組 開啟 伺服器證書功能
3. 匯入證書
    需要注意, 這裡匯入的是伺服器端證書, 不是ca證書也不是客戶端證書.
4. 開啟-網站->Default Web Site ->右鍵->編輯繫結
    新增 https 繫結. 
    注意 證書可以選擇剛才匯入的那個. 

5. 在Default Web site 上面 點選 IIS分組內的 SSL 設定SSL設定
    選擇要求 SSL
    客戶證書選擇 必須(R)

6. 重啟IIS

7. 使用 IE瀏覽器,或者是 360瀏覽器的相容模式進行處理. 

8. 注意可以匯入一個test01 型別的客戶端證書. 

9. 此時一般會報錯, 一般為 403.7 或者是 403.16
    Windows2008r2 可以使用如下方式解決
    命令列輸入 mmc -> 檔案 ->新增刪除管理單元
    -> 證書 ->在受信任的根證書頒發機構->證書內部
    點選匯入, 將ca 證書匯入進去

10. 建議重啟一下機器, 檢查 第九步匯入的證書是否還在.
    然後使用IE開啟 https://ip 會彈出要求選擇證書
    驗證透過.

Windows2016的處理

自己耗費了很長時間 去驗證 2016發現一直不行
跟2008r2 完全一樣的操作模式下, 還是不行.
所以感覺這裡面不應該是我自己的問題. 因該是微軟的問題 !!

懷疑 阿三們搞的程式碼有bug. 導致正常操作不行
在開啟了幾百個網頁之後, 找到了個賊傻逼的命令. 
certutil -addstore root  c:\pach\toca.crt
然後重啟機器.
發現 TMD 管用了.

明顯就是Windows2016的MMC下, 在匯入 自簽名的ca 證書時沒有同步處理登錄檔
導致瀏覽器傳送過來的 client crt IIS在校驗時發現不是授信ca頒發的
給回覆了 403.16 

透過certutil 命令 可以將ca 證書的資訊 插入到登錄檔
避免了IIS檢查客戶端證書時非授信ca頒發的問題. 

另外還發現了一個問題.  Win2008 mmc 匯入授信ca時也會出現丟ca 的情況.
美帝寫的程式碼也是處處bug, 處處丟資料. 

簡單總結

自建ca 很簡單, 但是很坑.
chrome的 truststore 我還沒找到在哪裡. 
感覺應該跟jdk一樣. 都有獨立的store 進行儲存位置.

其實這就是非信任社會的壞處
jvm虛擬機器不信任作業系統的truststore
chrome也不信任作業系統的truststore
都自己搞一套. 
不只公司搞重複建設. 
開源, 美帝印度阿三也是各種重複建設
不過不重複建設哪來那麼多工作崗位養育下一代? 
要是沒bug 哪來那麼多人去運維, 去交付, 去測試. 
辯證的看, 未嘗不是一個好事. 

相關文章