strongSwan VPN 中级证书颁发机构

strongSwan VPN 中级证书颁发机构

我一直在 Windows Active Directory 域中的 Linux 服务器上测试 strongSwan VPN。

我已经设法使具有 EAP 身份验证的单层 PKI 正常工作,但是当我尝试向设置中添加中间证书颁发机构时,连接到 VPN 失败。

VPN 和两个 CA 都是 Debian 9 盒。

我已经关闭了整个测试域并准备从头开始,想知道是否有人对我可能做错的事情有任何意见。

这是我运行的创建 CA 和服务器密钥对的命令。

创建根 CA 私钥:

$ ipsec pki --gen --type rsa --size 4096 --outform pem > ca.key.pem
$ chmod 600 ca.key.pem

创建自签名证书:

$ ipsec pki --self --flag serverAuth --in ca.key.pem \ 
  --type rsa --digest sha256 \
  --dn "C=US, O=IT_Testing, CN=VPN Root CA" --ca > ca.crt.der

创建中级CA私钥:

$ ipsec pki --gen --type rsa --size 4096 --outform pem > intca.key.pem

生成中间 CA CSR:

$ ipsec pki --pub --in intca.key.pem --type rsa >  intca.csr

签署中级 CA CSR:

$ ipsec pki --issue --cacert ca.crt.der \ 
  --cakey ca.key.pem --digest sha256 \
  --dn "C=US, O=IT_Testing, CN=INT CA" \
  --san "intca.testdomain.com" --flag serverAuth \ 
  --flag ikeIntermediate --outform pem \
  < intca.csr > intca.crt.pem

创建 VPN 服务器私钥和 CSR:

$ ipsec pki --gen --type rsa --size 2048 --outform pem > vpn.testdomain.com.key.pem

$ ipsec pki --pub --in vpn.testdomian.com.key.pem --type rsa > vpn.testdomain.com.csr

签署VPN服务器证书:

$ ipsec pki --issue --cacert intca.crt.pem \ 
  --cakey intca.key.pem --digest sha256 \
  --dn "C=US, O=IT_Testing, CN=vpn.testdomain.com" \
  --san "vpn.testdomain.com" --flag serverAuth --outform pem \
  < vpn.testdomain.com.csr > vpn.testdomain.com.crt.pem

我将根 CA 证书复制到/etc/ipsec.d/cacerts,将 VPN 证书复制到/etc/ipsec.d/certs,并将 VPN 服务器密钥复制到/etc/ipsec.d/private

我将这一行添加leftcert=/etc/ipsec.d/certs/vpn.testdomain.com.crt.pemipsec.conf。并指向ipsec.secretsVPN 服务器的私钥。

其余配置与工作单层 pki 相同。

答案1

在颁发中级 CA 证书时,请确保--ca在命令行中添加 CA basicConstraint 并实际创建 CA 证书。

并且不要向其中添加serverAuthikeIntermediate标志,只将它们添加到服务器证书中。ikeIntermediate不是指中间 CA 证书,而是指 IPsec 中间系统,可能不再需要添加它(它只是在草案中定义并且我认为只有非常老版本的 macOS 才需要它)。

相关内容