Linux

strongSwan VPN 中間證書頒發機構

  • June 14, 2018

我一直在 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 相同。

頒發中間 CA 證書時,請確保添加--ca到命令行以添加 CA basicConstraint 並實際創建 CA 證書。

並且不要向其中添加serverAuthandikeIntermediate標誌,僅將它們添加到伺服器證書中。ikeIntermediate不是指中間 CA 證書,而是指 IPsec 中間系統,可能沒有必要再添加它(它只是在草案中定義,我認為只有非常舊的 macOS 版本需要它)。

引用自:https://serverfault.com/questions/916571