Linux
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.pem
到ipsec.conf
. 以及指向ipsec.secrets
VPN 伺服器的私鑰。配置的其餘部分與工作的單層 pki 相同。
頒發中間 CA 證書時,請確保添加
--ca
到命令行以添加 CA basicConstraint 並實際創建 CA 證書。並且不要向其中添加
serverAuth
andikeIntermediate
標誌,僅將它們添加到伺服器證書中。ikeIntermediate
不是指中間 CA 證書,而是指 IPsec 中間系統,可能沒有必要再添加它(它只是在草案中定義,我認為只有非常舊的 macOS 版本需要它)。