我在 Ubuntu 18.04 上有一个 StrongSwan charon 服务器。我使用另一台 Ubuntu Linux 机器上的 StrongSwan charon-cmd 客户端连接到该服务器。
我从客户端机器用来连接服务器的命令是:
charon-cmd --cert ./GoDaddyCA1.crt --cert GoDaddyCA2.crt --host xxx.example.com --identity myusername
它运行良好,但我不明白为什么需要在命令行中使用两个“--cert”选项来信任链中的两个 GoDaddy CA 证书。
我的个人证书由 StrongSwan 服务器提供,其权限为 GoDaddyCA1.crt。GoDaddyCA1.crt 证书的权限为 GoDaddyCA2.crt 证书。GoDaddyCA2.crt 是自签名根证书。
因此,权威链是:
MyPersonalCert.crt -> GoDaddyCA1.crt -> GoDaddyCA2.crt
charon-cmd 命令行选项“--cert”的意思是声明“这是我信任的证书”。因此,我希望通过信任 GoDaddyCA1.crt,我的个人证书也应该受到信任。
但这对于 charon-cmd 来说还不够好。charon-cmd 客户端要求我指定“--cert”以信任自签名证书。但这似乎是多余的。如果我信任中间 CA 证书,那么显然我也必须信任它的权威 CA 证书,对吗?
这是错误还是功能?如果是功能,它有什么好处?
答案1
中级 CA 证书目前不被接受为 strongSwan 中的信任锚,只有自签名根 CA 证书才被接受。
如果服务器随服务器证书一起发送了中间 CA 证书,则您只需信任根 CA 证书(即--cert GoDaddyCA2.crt
足够)。如果没有,请确保已安装该证书并检查配置(send_cert
例如swanctl.conf)。只有当这不是一个选项时,您才无法避免必须在客户端上配置两个证书。