2016-01-22 73 views
1

我正在設置不同主機上的服務之間的雙向SSL通信。假設我有自己的CA.我的所有服務都通過集中的jks來信任我。現在讓我們說我有由A簽名的證書B.當服務發送證書時,他們應該發送整個鏈B - A還是B?我相信這兩種方法都適用於大多數實現。受信任的根CA應該是證書鏈的一部分嗎?

我試圖找到關於這個在線的規範信息,但我什麼都沒有提出。

感謝您的幫助

+1

什麼軟件用於驗證證書?驗證實體除證書之外還有哪些信息? (a [mcve],也許) –

+0

問題更多地是關於特定軟件的標準。驗證實體提供證書並知道它信任CA. – mck

+0

如果是關於什麼標準說,然後相關:http://security.stackexchange.com/questions/81972/what-part-of-tls-specifies-how-to-verify-a-certificate-chain –

回答

3

作爲每tls - Validating an SSL certificate chain according to RFC 5280: Am I understanding this correctly? - Information Security Stack Exchange

服務器應該發送將要被使用的確切鏈;明確允許服務器 省略根CA,但僅此而已。

參考(RFC 5246 - TLS v1.2, sec. 7.4.2. - Server Certificate):

certificate_list

這是證書的序列(鏈)。發件人的 證書必須在列表中排在第一位。每個以下證書 必須直接證明前面的證書。由於證書 驗證要求根密鑰是獨立分發的,因此可以從鏈中省略指定根證書 權限的自簽名證書,前提條件是遠程端必須已經擁有它才能驗證它 任何情況。

2

可信根CA背後的想法是它是可信的。您是否期望瀏覽器僅僅因爲它包含根CA而信任服務器發送的任何內容?沒有!

因此,根CA必須已經在客戶端並且必須在那裏被信任。它不應該被服務器包含在證書鏈中,但是如果你這樣做了,反正瀏覽器會忽略它。

相關問題