CA證書(shū)服務(wù)器對(duì)于保護(hù)內(nèi)網(wǎng)安全是極為重要的,隨著筆者單位硬件的升級(jí),系統(tǒng)版本從Windows Server 2008 R2升 級(jí)到 了Windows Server 2012 R2。對(duì)應(yīng)的,原基于Windows Server 2008 R2的CA證書(shū)頒發(fā)機(jī)構(gòu)也升級(jí)到了Windows Server 2012 R2環(huán)境。
升級(jí)過(guò)程比較順利,客戶(hù)機(jī)也順利地從新的CA服務(wù)器上申請(qǐng)到了證書(shū),用戶(hù)感覺(jué)和使用之前的CA服務(wù)器是一樣的。但是,在實(shí)際使用中,發(fā)現(xiàn)了一些問(wèn)題,例如無(wú)法正常驗(yàn)證證書(shū)吊銷(xiāo)列表、CA變量存在異常、對(duì)新的CA服務(wù)器沒(méi)有訪問(wèn)權(quán)限等。
在本例中原CA服務(wù)器名稱(chēng)為“caserver08”,遷移后的CA服務(wù)器名稱(chēng)為“caserver082”,域名為PStools,解壓PStools到C盤(pán)的PStools目錄。
3.點(diǎn)擊“開(kāi)始→運(yùn)行(或者Windows+R鍵)”輸入:“C:PStoolspsexec.exe -d -i -s regedit.exe”確定后點(diǎn)擊“同意”按鈕。
4.修改注冊(cè)表,當(dāng)前已處于特權(quán)模式,運(yùn)行regedit后依次打開(kāi):[HKEY_LOCAL_MACHINESYSTEMCurrentControlSet“xxx.com”。 運(yùn) 行 ADSI編輯器,在左側(cè)的“ADSI編輯器”節(jié)點(diǎn)的右鍵菜單上點(diǎn)擊“連接到”項(xiàng),在連接窗口中選擇“選擇一個(gè)已知命名上下文”項(xiàng)。在列表中選擇“配置”項(xiàng),點(diǎn)擊“確定”按鈕,在左側(cè)選擇“ADSI編輯器→配置→CN=Configu ration,DC=xxx,DC=com→CN=Services→CN=Public Key Services→ CN=CDP”分 支下,可以看到兩個(gè)“CN=xxx”項(xiàng)目,其中的“xxx”為兩個(gè)CA服務(wù)器的名稱(chēng),例 如“CN=caserver08”、“CN=caserver12”,這表示的不是兩臺(tái)主機(jī),而是兩個(gè)容器。
打開(kāi)Active Directory站點(diǎn)和服務(wù)控制臺(tái),點(diǎn)擊菜單“查看→顯示服務(wù)節(jié)點(diǎn)”項(xiàng),在左側(cè)選擇“Services→ Public Key Services→AIA”項(xiàng),在右側(cè)選擇與CA服務(wù)同名的項(xiàng)目,在屬性窗口的“安全”面板中查看組或用戶(hù)名列表,可以看到原CA服務(wù)器擁有訪問(wèn)權(quán)限,而新的CA服務(wù)器沒(méi)有訪問(wèn)權(quán)限。實(shí)際上,如果原CA服務(wù)器和新CA服務(wù)器同名的話,遷移起來(lái)就順暢得多。當(dāng)遷移完畢后,將原CA服務(wù)角色刪除即可。
但是,如果兩者不同名,例如本例中的“caserver08”和“caserver12”,就存在一定的問(wèn)題。例如,在原CA上發(fā)布的證書(shū),在進(jìn)行校驗(yàn)時(shí),路徑依然指向原CA服務(wù)器。打開(kāi)“caserver12”服務(wù)器上遷移過(guò)來(lái)的證書(shū),在屬性窗口中的“詳細(xì)信息”面板中選擇“CRL分發(fā)點(diǎn)”項(xiàng),可以看到URL路徑指向的是與“caserver08”相關(guān)的路徑。但是在“caserver12”上頒發(fā)的證書(shū), CRL路徑指向的是自身。
也就是說(shuō),在原CA服務(wù)器上頒發(fā)的證書(shū),雖然證書(shū)信息遷移過(guò)來(lái)了,但是校驗(yàn)路徑依然未變。因此,在遷移完成后,可以將“caserver08”上的活動(dòng)目錄證書(shū)服務(wù)刪除,但是必須保證和證書(shū)LDAP校驗(yàn)?zāi)J较嚓P(guān)的配置信息依然存在。運(yùn)行“adsiedit.mac”程序,在ANSI編輯器左側(cè)選擇“ADSI編輯器→配置→CN=C onfiguration,DC=xxx,DC=com→CN=Services→CN=Public Key Services → CN=CDP”分支,在其下必須保證存在以上兩個(gè)容器。如果將“caserver08”容器刪除,那么原CA服務(wù)器頒發(fā)的證書(shū)將無(wú)法進(jìn)行校驗(yàn)。
當(dāng)CA證書(shū)頒發(fā)機(jī)構(gòu)遷移后,原CA服務(wù)器停止服務(wù)之后,在域中就只有新的CA證書(shū)服務(wù)器在運(yùn)作。在該機(jī)上打開(kāi)證書(shū)頒發(fā)機(jī)構(gòu)窗口,在左側(cè)選擇CA服務(wù)器名,在屬性窗口中打開(kāi)“擴(kuò)展”面板,在“選擇擴(kuò)展”列表中選擇“CRL分發(fā)點(diǎn)”項(xiàng),在CRL列表中的“LDAP”路徑中進(jìn)行分析,不難看出對(duì)應(yīng)的實(shí)際上是名為“caserver12”的容器。這樣,在發(fā)布吊銷(xiāo)列表時(shí),只能將相關(guān)證書(shū)信息寫(xiě)入到和本機(jī)同名的容器中。
此外,當(dāng)域中客戶(hù)機(jī)執(zhí)行“certutil.exe -url e:xxx.cer”命令,對(duì)導(dǎo)出的證書(shū)進(jìn)行校驗(yàn),可以看到校驗(yàn)可以順利通過(guò)。其中的“xxx.cer”為證書(shū)文件名稱(chēng)。注意,在新的CA服務(wù)器上校驗(yàn)證書(shū)吊銷(xiāo)列表時(shí),可能會(huì)出現(xiàn)一些問(wèn)題,主要原因是后臺(tái)的OCSP服務(wù)器依然連接到原有的CA服務(wù)器讀取數(shù)據(jù)。OCSP服務(wù)器可以讓客戶(hù)端在復(fù)雜的網(wǎng)絡(luò)環(huán)境中,通過(guò)訪問(wèn)證書(shū)吊銷(xiāo)列表,來(lái)檢測(cè)CA以及相關(guān)證書(shū)是否有效。至于CA變量出現(xiàn)異常的情況,就需要對(duì)注冊(cè)表中的相關(guān)項(xiàng)目進(jìn)行修改。
打開(kāi)Active Directory站點(diǎn)和服務(wù)控制臺(tái),點(diǎn)擊菜單“查看→顯示服務(wù)節(jié)點(diǎn)”,選 擇“Services→ Public Key Services→ AIA” 項(xiàng),在右側(cè)選擇與CA服務(wù)同名的項(xiàng)目,在屬性窗口“安全”面板中查看組或用戶(hù)名列表。點(diǎn)擊“添加”按鈕,將“caserver12”計(jì)算機(jī)添加進(jìn)來(lái)。之后針對(duì)該服務(wù)器分配權(quán)限,使其擁有完全控制的權(quán)限。對(duì)應(yīng)的,選擇“Services→ Public Key Services→CDP→caserver08”項(xiàng),在屬性窗口中打開(kāi)“安全”面板,執(zhí)行同樣的操作,為“caserver12”主機(jī)配置完全訪問(wèn)的權(quán)限。在這樣,就針對(duì)新的CA服務(wù)器設(shè)置了合適的訪問(wèn)權(quán)限。
根據(jù)以上分析,實(shí)際上是存在著以“caserver08”和“caserver12”命名的兩個(gè)容器,但是在吊銷(xiāo)證書(shū)列表時(shí),只針對(duì)其中一個(gè)容器寫(xiě)入數(shù)據(jù),另外的“caserver12”容器處于閑置無(wú)用狀態(tài),不會(huì)存儲(chǔ)證書(shū)列表更新信息。對(duì)于在“caserver12”上頒發(fā)的新的證書(shū),在執(zhí)行吊銷(xiāo)操作時(shí)是沒(méi)有影響的,但是對(duì)遷移過(guò)來(lái)的原CA服務(wù)器頒發(fā)的證書(shū)進(jìn)行吊銷(xiāo)時(shí),就會(huì)出現(xiàn)無(wú)法寫(xiě)入“caserver08”容器,而不能進(jìn)行更新的問(wèn)題。當(dāng)然,如果這類(lèi)證書(shū)已經(jīng)過(guò)期,在續(xù)約時(shí)可以使用“caserver08”容器,就不存在該問(wèn)題了。
因此,將吊銷(xiāo)的證書(shū)信息同時(shí)寫(xiě)入到上述兩個(gè)容器中,才可以化解該問(wèn)題。方法是,在上述“擴(kuò)展”面板中點(diǎn)擊“添加”按鈕,在添加位置窗口中的“位置”欄中輸入“l(fā)dap:///CN=
在OCSP服務(wù)器上打開(kāi)聯(lián)機(jī)響應(yīng)程序,在左側(cè)選擇“吊銷(xiāo)配置”項(xiàng), 在屬性窗口中的“吊銷(xiāo)提供程序”面板中點(diǎn)擊“提供程序”按鈕,在“基本CRL”列表中顯示連接的依然是原CA服務(wù)器。點(diǎn)擊“編輯”按鈕,將其修改為新的CA服務(wù)器名即可。在左側(cè)選擇“數(shù)組配置”項(xiàng),在右鍵菜單上點(diǎn)擊“刷新吊銷(xiāo)數(shù)據(jù)”項(xiàng),執(zhí)行對(duì)應(yīng)的刷新操作。這樣,OCSP服務(wù)器就會(huì)和新的CA服務(wù)器互傳數(shù)據(jù)了。
為了讓遷移更加徹底,需要對(duì)注冊(cè)表中相關(guān)數(shù)據(jù)進(jìn)行修改。在注冊(cè)表編輯器中打開(kāi)“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesCertsvcConfigurationxxx”分支,其中的“xxx”為CA服務(wù)器名,在其中查找包含源CA服務(wù)器名的項(xiàng)目,找到后修改為新的CA服務(wù)器名。例如,將“caserver08”修改為“caserver12”等。這樣做的好處在于可以正確使用CA變量。