2016-04-08 45 views
0
A 
/\ 
B C 
| | 
D E 

當E(或C)正在驗證D證書時,他也需要信任B. 有沒有辦法避免將B的證書明確添加到E的CA商店?爲什麼不相信有效的中級x509證書?

使用openssl,有沒有辦法自動從客戶端或其他來源(可能是字段,如D的證書中的issuerDistributionPoint)檢索B的證書?

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[信息安全堆棧交換](http://security.stackexchange.com/)會是一個更好的問題。另外[我在哪裏發佈有關Dev Ops的問題?](http://meta.stackexchange.com/q/134306)。 – jww

+0

***'E' ***(或***'C' ***)不能用於驗證***'D' ***證書的路徑。另請參閱[RFC 4158,Internet X.509公鑰基礎結構:認證路徑構建](http://tools.ietf.org/html/rfc4158)。 – jww

回答

2

有沒有辦法避免必須明確地將B的證書添加到E的CA商店?

通常的方法是在TLS握手內發送所有中間證書以及葉證書。例如,如果你連接到google.com你得到的TLS握手中由服務器提供以下證書鏈:

0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com 
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2 
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA 

使用中間證書(1,2),然後客戶端可以建立在信任鏈葉證書(0)直到本地存儲的可信CA(在這種情況下爲/C=US/O=Equifax/OU=Equifax Secure Certificate Authority)。

當然,您也可以將中間證書添加爲客戶端中的可信任證書。但是,由於還有很多更改的次數比受信任的根證書更多,所以您需要更多的內存,但您還需要定期使用新的中間證書更新客戶端。

使用openssl,有沒有辦法自動從客戶端或其他來源(可能是字段,如D的證書中的issuerDistributionPoint)檢索B的證書?

openssl沒有提供具體的工具來解決這個問題。桌面瀏覽器谷歌瀏覽器實際上會嘗試從互聯網上下載缺失的中間證書,可能是基於證書的機構信息訪問部分中的信息。但我不知道其他瀏覽器(除Opera之外的其他Chromium衍生物)是否這樣做。

+1

另外請參閱[PKI]目錄「問題](http://www.google.com/search?num=40&q=pki+」哪個+目錄「+問題)。 – jww

+0

@jww:+1。並非每個證書都包含「權威信息訪問」中的信息,然後您並不真正知道應該從哪裏獲取缺少的中間信息。 –