✅ 服务端 (Server) 的配置
服务端的完整配置由两个文件组成:
1. Server.bks
(服务器的身份与CA1信任)
- 服务端私钥 + 由 CA1 签发的服务端公钥证书:
server
条目包含服务器的私钥和其公钥证书。- 该证书由 CA1 (
CN=ServerCA, O=Ingenico
) 签发。
- CA1 的公钥证书:
server_ca
条目包含 CA1 的自签名根证书。- 用途: 用于构建证书链(在TLS握手时可能发送给客户端),或用于服务器验证其他由CA1签发的实体。
2. TrustedServer.bks
(服务器用于验证客户端的信任锚)
- 用于信赖客户端的 CA2 的公钥证书:
client_ca
条目包含 CA2 (CN=ClientCA, O=Ingenico
) 的公钥证书。- 用途: 这是最关键的信任锚。当客户端连接时,服务器用这个 CA2 的公钥来验证客户端出示的证书(由CA2签发)的签名,从而确认客户端身份。
✅ 客户端 (Client) 的配置
客户端的完整配置同样由两个文件组成:
1. Client.bks
(客户端的身份与CA2信任)
- 客户端私钥 + 由 CA2 签发的客户端公钥证书:
client
条目包含客户端的私钥和其公钥证书。- 该证书由 CA2 (
CN=ClientCA, O=Ingenico
) 签发。
- CA2 的公钥证书:
client_ca
条目包含 CA2 的自签名根证书。- 用途: 可能用于客户端验证其他由CA2签发的实体,或用于管理。
2. TrustedClient.bks
(客户端用于验证服务器的信任锚)
- 用于信赖服务器的 CA1 的公钥证书:
- 这个文件应该包含 CA1 (
CN=ServerCA, O=Ingenico
) 的公钥证书。 - 用途: 这是最关键的信任锚。当客户端连接服务器时,客户端用这个 CA1 的公钥来验证服务器出示的证书(由CA1签发)的签名,从而确认服务器身份。
- 这个文件应该包含 CA1 (
重要提醒: 您提到客户端有“用于信赖客户端的CA1的公钥证书”,这应为笔误。正确的说法是“用于信赖服务器的 CA1 的公钥证书”。客户端信任的是签发服务器证书的 CA,即 CA1。
🔐 总结:完美的双向信任
角色 | 拥有自身私钥和... | 拥有签发者CA的公钥证书 | 拥有用于验证对方的CA的公钥证书 |
---|---|---|---|
服务端 | CA1 签发的服务端公钥证书 | CA1 (ServerCA ) |
CA2 (ClientCA ) -> 用于验证客户端 |
客户端 | CA2 签发的客户端公钥证书 | CA2 (ClientCA ) |
CA1 (ServerCA ) -> 用于验证服务器 |