我一直在 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.pem
到ipsec.conf
。并指向ipsec.secrets
VPN 服务器的私钥。
其余配置与工作单层 pki 相同。
答案1
在颁发中级 CA 证书时,请确保--ca
在命令行中添加 CA basicConstraint 并实际创建 CA 证书。
并且不要向其中添加serverAuth
和ikeIntermediate
标志,只将它们添加到服务器证书中。ikeIntermediate
不是指中间 CA 证书,而是指 IPsec 中间系统,可能不再需要添加它(它只是在草案中定义并且我认为只有非常老版本的 macOS 才需要它)。