2024年1月18日 星期四

微軟企業CA與雙層PKI CA架構 上篇

前言

在台灣微軟中文技術文件真的是少得可憐,有些關鍵問題都是靠國外英文教學或者簡體中文才查的到 

在台灣使用 Windows AD 網域的企業很多,但是在內部建設CA的卻沒有很多

原因在於AD不會對外,大家對於內部的安全需求自然降低了標準

但是對於如果內部要採用零信任架構的話,其實在內部架設 CA 就會非常重要

至於單層還是雙層還是更多層取決企業的規劃而定,架設方法都是一樣的


目前微軟的 Windows CA 服務可以是 獨立CA 也可以是 企業CA,差異如下


偷個懶搬一下外面別人整理好的


如果只要企業CA的話,靠著精靈一直下一步大概就會建起來了,但是客群會變成只能支援 加入網域的 Windows,如果要支援非微軟的裝置

還是要乖乖地將撤銷清單 CRL 與 AIA 設定好讓企業 PKI 可以運作才行



主要流程:

1.建立獨立離線CA

2.設置離線CA發佈的CRL與AIA

3.設定IIS與DNS,確保離線CA發佈的CRL與AIA在內網能正常運作

4.在新已加入網域的伺服器建立企業CA並選擇子CA設定

5.將子CA的申請檔案傳回獨立離線CA做核准

6.將核准的檔案傳回企業CA

7.設定IIS與DNS,確保企業CA可以正常運作



1. 建立獨立離線CA

建議使用虛擬機,至於CA的系統請用 Windows Server 來建立

雖然沒有硬性規定不能使用 Linux 來建立 Root CA

但是網路上找到的大多是用微軟自家的 Server 來建立居多

反正這個CA平時都是關閉甚至是加密狀態保存在其他地方

也不需要跟微軟購買授權基本上跟免費是一樣的了

虛擬機建議掛載兩個虛擬硬碟,一個用來交換檔案用

如果你要建立快照以防萬一,可以等到要交換檔案的時候再掛載


虛擬機名稱方便自己識別就好,root ca 主機名稱請自己想好

主機名稱會在第一層憑證上看到


建議你可以在這裡建立一個檢查點,操作失誤可以直接還原

開始安裝 ADCS 憑證角色

接著設定 CA 角色 (獨立CA)


Root CA


即使到了Server 2022 預設的加密演算還停留在 SHA256 與 2048 長度


離線CA因為要放久,如果很常開起來更新那可以用預設

想要安全高一些可以改成 SHA512 與 4096 長度


有效期限就看您的組織規劃的狀況

但是只要這個期限一到或者中途更新了Root憑證

底下所有憑證都必須要換新重發憑證才能正常運作

這期間累積起來的憑證與服務通常很恐怖,所以通常會拉長有效期限

甚至有的單位只要沒出問題乾脆就一直無限延長期限


最終確認


確認一下離線CA狀態與憑證是否沒有問題




2.設置離線CA發佈的CRL與AIA

先設定 CDP ( CRL發佈 )

在憑證授權單位的工具內,將CA主機選擇內容打開

並將頁面切換到延伸這個頁面


上面代表了 CDP 發佈的 CRL 位置

第一個位置代表本機位置(C:Windows\system32\開頭的),這應該不難理解吧

第二個代表是LDAP位置,我們是獨立CA沒有LDAP要用,移除了吧

第三個是 http 發佈位置的設定,這個是我們重點要設定的地方

第四個是檔案位置,跟第一個幾乎一樣只是路徑表達的方式不同,

我不喜歡複雜的方式不夠直白明瞭,通常我會直接砍掉

所以我喜歡砍光他只留一個保存用,剩下自己定義


先來設定CRL檔案儲存位置

在C根目錄下建立一個rootcadata資料夾,在 CDP 發佈點選擇新增,

將位置設定成剛剛建立的資料夾路徑,檔名自定義記得要有crl副檔名

在這裡我使用 certrootca.crl 作完整檔名


在這個位置發佈 CRL(P) 請一定要打勾,不然 CRL 檔案不會儲存到我們設定的位置


再來設定發佈的 web 位置,這個位置會影響PKI能不能順利驗證憑證的有效性

test-root-ca 是主機名稱,zerotest.com 是網域名稱,結合 CRL 的檔名

http://test-root-ca.zerotest.com/certrootca.crl

由於這是 root ca 發佈 crl 撤銷清單的下載路徑,他不能使用 https 協定來取得內容

並且 web 位置取得的解析是放在 DNS 的紀錄上,所以流量也不大CRL也小

重點:請記得不要將此 web 位置設定 SSL,CryptoAPI 不會取得 HTTPS URL

打勾下面這兩個選項

包含在已發行憑證的 CDP 延伸中 () 

包含在已發行 CRL 的 IDP 延伸中 (L)


接著來到 AIA 的設定部份


AIA 預設位置與 CDP 是一樣的,所以不在多做說明了


砍掉你覺得不需要的部份


新增檔案位置,要注意的是這裡的副檔名是 crt

c:\rootcadata\certrootca.crt



新增 web 位置

http://test-root-ca.zerotest.com/certrootca.crt

打勾 包含在已發行憑證的 AIA 延伸中()



最後別忘了套用


接下來我們調整這台離線 Root CA的 CRL 到期時間


到期時間影響你將這台機器關起來的時間,如果設定一年到期

就是每年到期前都要將這台機器開機來產生新的 CRL,產完傳檔就關機

如果兩年就是兩年開一次這台機器起來產生 CRL,產完傳檔就關機

請用自己組織的資安的標準來決定日期長短,預設是一週到期


設定好到期日了之後,檢查先前建立的資料夾,確認資料夾存在


接下來發佈 CRL ,因為先前有針對此資料夾設定檔案位置,所以會拿到 CRL 檔案


稍微檢查一下到期日是否與你設定的一致


接下來我們還需要到 CRT 預設位置去取得公開憑證

C:\Windows\System32\CertSrv\CertEnroll

複製到我們的建立好的資料夾




接下來要將 CRL 與 CRT 的檔案複製到我們 IIS 伺服器上

要怎麼在離線(沒有網路)的狀態下複製?

利用虛擬硬碟掛載的方式,這裡就不在多描述怎麼掛載了




3.設定 IIS 與 DNS,確保離線 CA 發佈的 CRL 與 AIA 在內網能正常運作


來到網域 DNS 伺服器這邊,我們先將先前離線 CA 主機名稱給予別名紀錄


我想讓這台 dc1-test 來擔任 CRL 的發佈主機,因為我要將 IIS 也放在此處

請別跟著教學放 DC 上,這只是我的測試用環境,實際環境請自行依據組織規劃決定


test-root-ca 是離線CA的主機名稱,也是先前設定發佈 CRL HTTP 裡面的路徑


DNS 查詢確認一下,看看 DNS 查詢到的是否正確,要有完整的 FQDN


接下來 IIS 還必須做一些設定,如果你的企業 CA 沒有打算發佈 Delta CRL 的話可以忽略

因為 Delta CRL 的檔案最後會有一個 "+" 的符號當作檔名,會造成無法下載檔案

一旦無法下載檔案,憑證的檢查就會失敗跳出警告,所以這是解決方案之一

打開 IIS 管理員 在預設網站上 進入要求篩選


選擇編輯功能設定


將允許雙重逸出打勾


接下來將離線 CA 的 CRL 與 CRT 兩個檔案,放到 IIS 預設的資料夾內

在 IIS 管理員打開 預設網站的資料夾




接下來打開瀏覽器,確認先前設定的兩個 http 的路徑是否可以下載 CRL 與 CRT



檢查檔案可否正常開啟



獨立CA 的部份就到這裡告一段落

下一篇再來是建立企業子CA的部份與憑證申請的部份


微軟企業CA與雙層PKI CA架構 下篇

沒有留言:

張貼留言