題:
撤銷中級CA會怎樣?
Anne Stellingwerf
2011-07-13 17:00:52 UTC
view on stackexchange narkive permalink

目前,我正在使用一個證書管理器,該證書管理器使我們的產品可以安全地連接到遠程Web服務(通過TLS / SSL)。為了安全起見,我們使用證書吊銷列表檢查(或CRL檢查)來確定某個證書是否已被吊銷。不過,我仍然不清楚一些問題:

  • 我必須/應該獲取完整鏈的所有CRL來檢查證書的有效性嗎?
  • 中級時我應該怎麼辦? CA被吊銷了嗎?是否還將其所有證書也添加到CRL?可以將證書替換為新的(完整的)版本嗎?
三 答案:
bethlakshmi
2011-07-13 20:48:24 UTC
view on stackexchange narkive permalink

必須/應該獲取完整鏈的所有CRL來檢查證書的有效性嗎?

絕對。 CA僅為其頒發的證書構建CRL。必須通過發布CA的CRL檢查CA本身的狀態。注意:這是遞歸搜索。在編寫代碼或測試系統時,請記住,可以有多個“一代”的發行CA,並檢查所有證書 自簽名根。根CA將沒有關聯的CRL-如果該根遭到破壞,則必須從任何信任存儲中手動刪除該根。 strong>

不信任CA簽署的任何。證書僅與頒發它的CA一樣好。如果CA變得不可信任,則該CA頒發的證書將不再可信任。如果CA處於活動狀態,則將創建一個過大的CRL,這對於傳輸,解析和執行任何操作都將非常痛苦。另外,如果CA的密鑰丟失了,則可能無法創建此CRL。

實際上,明智的做法是從任何信任存儲區中刪除CA。從信任庫中刪除CA會導致從信任庫中構建其CA鏈的任何應用程序迅速失敗證書驗證。證書鏈的建立通常是在進行任何OCSP / CRL檢查之前完成的,因此,通過修剪商店中已撤銷的CA,可以避免多餘的步驟和可能的帶寬佔用應用程序。

被撤銷的中間CA也是重大事件-老實說,我從未在現實世界中經歷過。如果我在一個高度安全的系統上工作,那麼我還將盡可能廣泛地發布撤銷CA的信息。特別是可能正在處理已長時間緩存的CRL的任何系統。

如果我持有由該CA簽署的證書,我將盡快制定我的重新認證策略。

是否還將所有證書也添加到CRL?

否。請注意,有兩種不同的CRL在起作用:-發行CA的CA(鏈中的根CA或另一個CA)-發行CRL以驗證發行CA的證書的狀態-發行CA-發行CRL進行驗證此CA頒發的證書的狀態。

如果您擁有從根到終端實體的n個證書的CA鏈,則將涉及n-1個CRL。

可以將證書替換為新的(安全的)版本嗎?

是的。妥協反映了CA私鑰的不可信性。 CA將需要一個新的私鑰,這實際上使其成為一個新的CA。

從技術上講,可以使用相同的專有名稱來重命名CA-如果具有可操作的價值。但是實際上,我的誘惑是用新的DN來建立一個新的CA,以使所有人都清楚區別。

這將是後端的主要痛苦。新CA的用戶將需要:-刪除受感染的證書,並用新的CA證書替換-用新CA簽名的證書重新認證所有最終實體證書。

請注意,有關安全政策的問題,例如您是重新認證還是密鑰您的最終實體。如果受感染的系統無法訪問任何終端實體的私鑰,則可以使用新的CA密鑰對同一私鑰進行重新簽名。如果您將證書請求存儲在文件中,則可以將其重新提交給新的CA並為自己節省一堆密鑰。

但是,在某些情況下,CA系統可能會將一些私鑰置於託管狀態-這意味著在某些中央位置(通常在CA系統附近),私鑰被安全地存儲,以防用戶鬆開其密鑰並需要更新。這在加密證書的情況下尤其普遍,因為即使在撤銷加密密鑰後,您可能仍需要檢索加密的數據。

在這些情況下,如果CA被洩密,密鑰託管就很有可能被洩密。這意味著,託管方中的所有密鑰用戶都應生成新的密鑰對並請求新的證書。

過去,這取決於是否允許重新認證。由於新證書將具有新的有效期,因此可能是由於安全權限無法充分限制有效期而將其稱為“不進行續訂/重新認證”。

Thomas Pornin
2011-07-13 17:34:29 UTC
view on stackexchange narkive permalink

是的,您應該獲取鏈中所有證書的所有CRL。僅當可以將證書插入有效證書鏈的末尾並且已確定其吊銷狀態時,才可以將證書視為可用於任何目的,包括驗證其他證書。當然,除非可以根據授權的公鑰驗證其簽名,否則不得信任CRL,這可能還意味著一些額外的證書鏈。

被吊銷的證書意味著其內容不存在。被認為是可用的。吊銷可以看作是頒發機構CA已添加到證書中的加密簽名上的“取消命令”:“即使從數學上看,該簽名也不能視為有效”。您也可以將吊銷視為在證書終止日期的替代。

如果吊銷了中間CA證書,則該證書將變得不可用。您不能將其用作鏈的一部分。因此,如果要驗證CA頒發的證書之一,則需要找到具有相同CA名稱和密鑰且未被吊銷的另一個中間CA證書。 / p>

可以出於任意原因撤消證書:最終,由於負責發布CRL聲明撤消狀態的人,證書被撤消。吊銷證書的可能原因之一是相應的私鑰已被盜用(被盜)。那時,用該密鑰簽名的任何東西都不再是可信任的,因為它可能已經由密鑰竊賊簽名了。在那種情況下(密鑰洩露),不僅將撤銷中間CA證書,而且中間CA將生成一個新密鑰,因此該中間CA的任何其他證書都將使用新密鑰。最終結果是,該中間CA先前頒發的證書將不再再次出現在有效鏈中。撤銷它們將毫無意義。

不僅是“只有在可以將其插入有效證書鏈的末尾並且已確定其吊銷狀態時”,父證書還必須具有CA:true密鑰用法
@Hubert:是的,很好,必須檢查大量的細節和擴展名(“ CA”位設置為TRUE的基本約束;如果有Key Usage擴展名,則必須斷言keyCertSign位;名稱約束必須匹配;政策約束條件必須匹配;依此類推)。我使用術語“插入”來涵蓋所有這些。
我在這裡註意到它是因為它是證書處理中的一個非常常見的錯誤(由IE,Mozilla和KHTML專家製造)。在查看所有顯示如何驗證證書的漂亮圖表時,這並不明顯。
gowenfawr
2011-07-13 17:35:43 UTC
view on stackexchange narkive permalink
  • 是的,僅當直到根的整個證書鏈都有效且未被吊銷時,證書才有效。因此,您應該全部檢查。
  • 如果中間CA被吊銷,那麼子證書將需要由有效的CA重新頒發,無法“交換”有效的中間件。需要說明的是:“重新發行”是指“創建了一個引用相同名稱的全新證書”
  • 我不認為當撤銷父證書時,子證書也將被放入CRL。當然可以這樣做,但是從邏輯上講這將是痛苦的,而且我不知道有人這樣做。不過,這只是我最好的猜測,在這一點上,我很容易錯了。
+1。只需添加:如果中間證書的私鑰被盜,則可以在CA或其父級不知道的情況下創建新的子證書。因此,他們無法撤消那些子證書。因此,正如gowenfawr所說,您需要驗證完整的鏈。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...