2017-06-25 89 views
0

我已經創建了一個根CA(CA-R)和兩個中間CA(CA-I1 & CAI2)(都是自簽名的)。中間根權威交叉鏈驗證

使用CA-I1,我爲server1/client1生成了一個私鑰,CSR &創建了證書。安裝了Server1(Apache2)和client1.Im的證書,可以使用我的client1(python客戶端)成功連接到server1。

Here is the chain -> client1->server1->CA-I1->root CA 

使用CA-I2,我產生了對服務器2 /客戶端2的私鑰,CSR &創建的證書。安裝了Server2(Apache2)和client2的證書。我成功地能夠使用我的client2(python客戶端)連接到server2。現在

Here is the chain -> client2->server2->CA-I2->root CA. 

,我想知道,如果使用客戶機程序我可以連接到Server1通過將CA-I1的證書(既CA-I1 & CA-I2是由相同的根CA)蟒蛇的一部分客戶。 基本上想知道我是否可以通過鏈式認證。

+0

另請參閱[「使用OpenSSL與CA簽訂CA」](https://serverfault.com/q/374343/145545)上的服務器故障和[跨X.509和PGP之類的世界之間的交叉認證](https: InfoSec.SE上的.security.stackexchange.com/q/91392/29925)。 – jww

回答

1

這裏是鏈 - > client1-> server1-> CA-I1->根CA

我希望你的問題建議,但你沒有簽署與服務器證書的客戶端證書您使用CA證書(即CA-I1,CA-I2)簽署了客戶端證書。否則,只有在服務器證書既可以用作服務器身份驗證的葉證書,又可以用作簽署客戶端證書的CA證書時纔可以使用。這些不同類型的用例最好不要合併成一個證書。因此,你實際上應該用的是:

server1 -> CA-I1 -> root-CA 
    client1 -> CA-I1 -> root-CA 
    server2 -> CA-I2 -> root-CA 
    client2 -> CA-I2 -> root-CA 

...如果使用客戶機程序可以通過我加入CA-I1的證書(既CA-I1 & CA-I2連接到Server1來自相同根CA)Python客戶端

每個客戶端和服務器可以信任的幾個CA以及用於客戶端和服務器證書驗證實際上是不同證書的一部分。但是,考慮到server1信任由root-CA簽名的任何證書進行客戶端身份驗證,它將同時信任client1和client2,前提是構建信任鏈所需的所有中間證書都由客戶端和葉證書一起發送到root-CA。這與服務器認證沒有區別。

+0

謝謝@ Steffen..Its正如你所說的那樣工作..是否有限制地說「server1不信任其他中間人的證書」? – user1050619

+0

@ user1050619:您可以嘗試[SSLRequire](https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslrequire)或[Require](https://httpd.apache.org/docs/ 2.4/mod/mod_authz_core.html#reqexpr)與'SSL_CLIENT_I_ *'[環境變量](https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#envvars)一起限制證書的頒發者到特定的一個。 –

+0

好的,謝謝..將檢查那..不知道如果我的理解是正確的,但它奇怪我認爲中介CA(CA1)下的用戶(U1)可以交叉認證另一個服務器(S2)在中間CA( CA2),因爲它們都在同一個根CA下。我正在想象它在擁有多個部門的大公司中如何運作。每個人都應該擁有不同的根CA? – user1050619