2024年1月19日 星期五

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

在上篇已經將離線CA發佈的 CRL 與 AIA 公開憑證,放到 IIS web 提供下載

接下來要繼續建立企業CA來完成後續雙層或多層的架構

再次申明企業CA需要網域支援而非安裝在網域控制站內,並且是企業內部24小時在線的伺服器

是否可將企業CA安裝在網域控制站全看組織內部視情況而定沒有絕對一定要跟教學一致


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

安裝 ADCS




設定 CA


這一次 要選擇企業 CA 


選擇次級 CA


由於是新建立的企業CA,所以這邊是建立新的私鑰


一樣看自己組織的資安考量去調整演算法與金鑰長度


將憑證要求檔案存到硬碟


檢查一下確認沒問題在執行


警告是正常的,因為還在等待上一層CA的簽署回復


放到自己準備好的地方準備做傳檔的操作


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

保險起見可做一個還原點


檔案確認,可以自己改個長度小一點的檔名


在簽署之前還需要修改簽屬有效期限的日期

打開登入檔編輯器,在以下位置尋找CA的機碼

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CAName>

我們的目標有兩個機碼

ValidityPeriod 這個值可以修改日期單位,Years(年) Months(月) Weeks(週) Days(日),預設是Years(年)

ValidityPeriodUnits 這個值可以修改數量大小,再配合上面的值決定憑證的年限,預設是1

也就是說如果沒有調整就簽屬,預設這個企業CA憑證有效期限只有一年


我將憑證有效期限改成五年,改幾年自己決定

我習慣使用 Root CA 可延長 1-2 次的範圍來決定 子CA 的有效期限,第3次延長期限是萬不得已的緩衝時間,所以我這個測試環境 Root CA 才會是15年的期限


修改完成之後,要將 CA 的服務重新啟動,否則新設定不會生效

net stop certsvc

net start certsvc


開啟 cmd 或者 Powershell 執行以下的程式碼做離線簽屬

certreq -submit <offline file>


需求會送到要求欄位,可以再確認一些訊息


範本名稱 SubCA 沒錯,然後右鍵將他發行出去吧


使用指令將已簽屬的憑證儲存到硬碟,注意憑證識別編號要一致

certreq -retrieve 2 C:\rootcadata\certsubca.crt


檢查檔案有沒有順利產生


檢查年限是否正確,還有簽屬的憑證連結


沒問題的話就可以把檔案傳回去 企業子CA 的伺服器上了


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

回到企業 CA 上,打開憑證管理工具


ADCS 服務應該是停止的狀態



但是 CDP 與 AIA 是可以設定的



但是這次,這台是企業 CA,所以需要保留 LDAP 的訊息


這次我想做個改變,我想用一個新的網址來提供 CRL 與 AIA 公開憑證

一方面是保存與發佈是會比之前離線CA更頻繁

二來是萬一 IIS 死了會影響CA的發佈


在企業 CA 建立一個存放發佈用的資料夾

c:\rootcadata\pkidata


接著打開 IIS 管理員,新增一個虛擬目錄


設定 pki 別名與剛才建立的資料夾路徑


接著設定權限



新增 IIS AppPool\DefaultAppPool 帳戶給予讀取與執行權限



接下來可以將先前核准過的企業憑證先放入該資料夾,然後測試一下是否可以順利下載


用之前離線CA的網址,後面加上剛剛的別名 pki,如果可以下載的話就代表沒有問題,注意這裡的檔名不一樣了




沒問題的話,再來就可以順便設定 DNS 紀錄了



接下來回去設定 CRL 與 AIA 因為這次要設定的資料夾路徑與先前的路徑不同

c:\rootcadata\pkidata\certsubca.crl


web 位置

test-sub-ca 是主機名稱,zerotest.com 是網域名稱,別名 pki

結合 CRL 的檔名

http://test-sub-ca.zerotest.com/pki/certsubca.crl

注意別名別忘了


AIA 設定


接下來我們要將 企業子CA 服務上線了

先將離線的 CA 憑證放到憑證信任區



放到本機電腦區


放到受信任的根憑證授權單位


檢查憑證是否受信任



再來安裝CA憑證


選擇被簽屬過的憑證


接著 啟動服務



如果沒有問題,憑證公鑰與私鑰可以吻合服務就可以正常啟動了


回到我們規劃好的資料夾,查看撤銷清單 CRL 有沒有順利產出



回到撤銷清單的內容,可以自己決定要不要發佈 Delta CRL (我習慣取消他)


接下來我們檢查一下企業PKI是否顯示正常

執行 MMC 並在新增或移除管理單位新增 企業PKI


檢查只要狀態是沒問題的就好,通常有問題他的錯誤很明顯,大多是某個CRL或者AIA無法下載




接下來我們來測試這個企業 CA 是否可以順利發佈憑證

回到我們的MMC工具,新增一個憑證(本機電腦)

接著在憑證=>個人=>要求新憑證


因為這台剛好是網域控制站,文章超長了不再教學怎麼使用範本了,能確認憑證可以使用就好

直接申請網域控制站憑證


順利產出


回到 IIS 管理員,將他綁到預設網站的 443



新增 https 與選擇綁定的憑證



使用瀏覽器打開網站查看是否正常顯示SSL安全,很棒沒有問題!!!


到此所有教學已結束,CA憑證的名稱是可以改變的,因為文章已經很長了,所以沒有在放入教學


新增OCSP線上回應(不能在離線CA做)

打開AIA的部份新增

http://test-sub-ca.zerotest.com/pki/ocsp

勾選包含線上憑證狀態通訊協定


打開線上回應OSCP

新增撤銷設定


給予一個容易識別的名稱


選擇企業CA憑證


點選瀏覽=>選擇要簽屬的CA主機


如果自動簽屬憑證是空的像這樣,代表沒有發佈OCSP的專用憑證


回頭新增=>複製OCSP回應範本=>只修改註冊主機即可

記得發佈憑證範本


回到OCSP這邊


選擇提供者


這邊的CRL必須針對http發佈的位置做檢查

調整更新間格時間,依造企業需求


檢查服務狀態


檢查PKI狀態


測試OCSP回應

隨便找一張憑證,然後執行下面的指令

certutil -url "C:\temp\test.cer"


會開啟一個新的URL抓取工具


也可以測試URL取得是否正常


選擇OCSP並選擇抓取