私は、Windows ActiveDirectoryドメインのLinuxサーバーでstrongSwanVPNをテストしてきました。
EAP認証を使用した単一層PKIを機能させることができましたが、VPNに接続するセットアップに中間認証局を追加しようとすると失敗します。
VPNと両方のCAはDebian9ボックスです。
私はすでにこのテストドメイン全体を削除しており、最初からやり直す準備をしています。私が間違っている可能性があることについて誰かが何か意見を持っているかどうか疑問に思っていました。
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
中間CACSRを生成します。
$ ipsec pki --pub --in intca.key.pem --type rsa > intca.csr
中間CACSRに署名します。
$ 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
フラグとikeIntermediate
フラグを追加せず、サーバー証明書に追加するだけです。 ikeIntermediate
は中間CA証明書ではなく、IPsec中間システムを参照しており、おそらくもう追加する必要はありません(それは ドラフトで定義 であり、非常に古いバージョンのみだと思いますmacOSのそれが必要でした)。