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

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 哪來那麼多人去運維, 去交付, 去測試. 
辯證的看, 未嘗不是一個好事. 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章