2013-02-07 72 views
0

我發現以下方案通過使用自定義根CA來保護企業軟件的各個部分。這是做這種事的正確方法嗎?有這樣的方式有問題嗎?程序集簽名和證書

的sheme:

  1. 我有我的自定義根CA.有一組由這個CA創建的簡單證書。
  2. 有一個.NET程序集。來自我CA的證書A簽名的集合A中的集合,集合B來自我的CA的證書B簽名。
  3. 有一組客戶端,它信任我的CA(在第三方根CA文件夾中有證書,在證書管理單元中)。
  4. 使用可信證書籤名的程序集將正常工作,使用不可信證書籤名的程序集將不起作用。
  5. 我撤銷證書B(在我的服務器上使用根CA)。

的問題:

  1. 是否信息(證書B在撤銷)將通過使用OCSP自動發送給每一個客戶?
  2. 是否每個程序集的負載都會使用Internet連接進行OCSP調用?我的裝配中的每臺計算機是否會進行此類調用?
  3. 如果域中的一臺計算機沒有連接到互聯網,它會計數信任被吊銷的證書?
  4. 它是受保護的方式 - 客戶端可以打破OCSP請求,阻止我的服務器地址等嗎?
  5. 證書B是否會自動放置到客戶端服務器上的Untrusted Certificates文件夾中?
  6. 因此,一般來說,客戶端可以使我的軟件與不受信任的證書一起工作嗎?
  7. 是否有可能從程序集中清除此證書籤名?
+0

我只是在沒有互聯網接入的計算機上亂搞應用程序,OCSP給我帶來了麻煩。我能夠使用小工具從C#EXE和DLL中刪除證書,並且它們運行良好。所以,#7 ...是的,你可以只取得證書,不需要重新編譯。 – JPhi1618

回答

1
假設

OCSP正確配置:

1)撤銷應被存儲在驗證機構數據庫,並根據請求確認。 OCSP響應者將知道撤銷證書B.客戶應詢問。

2)我不知道互聯網連接,但證書提供驗證權威url來驗證證書,或者客戶端已經配置了一個。 如果這樣的網址是互聯網,答案是肯定的。

3)我認爲不是,畢竟證書可能會受到影響。這就是說,如果你使用自定義的根CA,你應該需要一個互聯網連接。網絡訪問是的,但沒有更多。

4)OCSP請求已簽名,因此它將花費很大的努力來妥協它並假冒響應。它可以做到,但我想如果有人能做到這一點,它可以做更有趣的事情。

5)我認爲是。如果OCSP請求完成並且證書被吊銷,那麼它將進入不受信任的證書。這是Windows標準行爲。

6)這是一個廣泛的問題,如果您使用證書進行代碼簽名,並且它由CLR執行,您應該能夠加載已簽名的程序集。但可能有辦法。

7)我想是的,如果你可以用ILSpy或類似的工具打開程序集,你可能會得到一些版本的源代碼並重新編譯它。與ILDASM相同

安全嗎?是的,非常多。但是,如果您需要額外的安全性,則應該清除代碼並提供內部驗證步驟,例如通過OCSP明確驗證的程序集中的嵌入式證書,並且該過程中的任何故障都會阻止進一步使用代碼。