双向认证

✅ 服务端 (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 的公钥证书”。客户端信任的是签发服务器证书的 CA,即 CA1。


🔐 总结:完美的双向信任

角色拥有自身私钥和...拥有签发者CA的公钥证书拥有用于验证对方的CA的公钥证书
服务端 CA1 签发的服务端公钥证书 CA1 (ServerCA) CA2 (ClientCA) -> 用于验证客户端
客户端 CA2 签发的客户端公钥证书 CA2 (ClientCA) CA1 (ServerCA) -> 用于验证服务器
posted @ 2025-08-28 14:15  蜗牛攀爬  阅读(9)  评论(0)    收藏  举报