VPNサーバーにしたいAWSインスタンスがあります。Windows 7クライアントをAmazonクラウドのプライベートネットワークに接続します。
- Ubuntu 12.04と
strongswan-ikev2
パッケージをインストールしました。 ipsec version
報告書Linux strongSwan U4.5.2/K3.2.0-52-virtual
- クライアントとサーバーの両方がNATの背後にあることに注意してください(クライアントはローカルオフィスネットワーク上にあるためクライアントであり、Amazonのクラウド内にあるためサーバーです)。Amazonダッシュボードとクライアントのファイアウォールの両方で、UDPポート500と4500のブロックを解除しました。
これは/etc/ipsec.confです:
config setup plutostart=no conn %default keyexchange=ikev2 ike=aes256-sha1-modp1024! esp=aes256-sha1! dpdaction=clear dpddelay=300s rekey=no conn win7vpn left=%any leftsubnet=<amazon VPC CIDR block> leftauth=pubkey leftcert=openssl-cert.pem leftid=<vpn server public dns name> right=%any rightsourceip=<amazon private IP address, which elastic ip is forwarded to> rightauth=eap-mschapv2 rightsendcert=never eap_identity=%any auto=add
これは/etc/ipsec.secretsです:
: RSA openssl-key.rsa TESTDOMAIN\testuser : EAP "testpassword"
Windowsがサーバーを認証できるように、サーバーのホスト証明書に署名したCA証明書をローカルマシン(ユーザーではない)の証明書ストアに追加しました。
次に、ここで規定されているように、Windows 7クライアントを使用してサーバーに接続しようとします。ただし、例外として、IPアドレスではなくDNS名を使用しています。ユーザー名、ドメイン、パスワードをipsec.secretsファイルに入力すると、接続が試行されます。
そうすると、次のようなstrongSwanログが表示されます。検閲と明確さの両方のために、これらを少し変更しました。CLIENTPUB / CLIENTPRIVはクライアントのパブリックIPアドレスとプライベートIPアドレスで、AMAZONPRIVはサーバーのプライベートIPアドレスです(これはサーバーのパブリックIPです。Amazonはこれを「Elastic IP」と呼んでいます)に転送します。
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep 4 00:16:17 localhost charon: 14[NET] received packet: from CLIENTPUB[500] to AMAZONPRIV[500]
Sep 4 00:16:17 localhost charon: 14[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) ]
Sep 4 00:16:17 localhost charon: 14[IKE] CLIENTPUB is initiating an IKE_SA
Sep 4 00:16:17 localhost charon: 14[IKE] local host is behind NAT, sending keep alives
Sep 4 00:16:17 localhost charon: 14[IKE] remote host is behind NAT
Sep 4 00:16:17 localhost charon: 14[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(MULT_AUTH) ]
Sep 4 00:16:17 localhost charon: 14[NET] sending packet: from AMAZONPRIV[500] to CLIENTPUB[500]
Sep 4 00:16:17 localhost charon: 15[NET] received packet: from CLIENTPUB[4500] to AMAZONPRIV[4500]
Sep 4 00:16:17 localhost charon: 15[ENC] unknown attribute type INTERNAL_IP4_SERVER
Sep 4 00:16:17 localhost charon: 15[ENC] parsed IKE_AUTH request 1 [ IDi CERTREQ N(MOBIKE_SUP) CP(ADDR DNS NBNS SRV) SA TSi TSr ]
Sep 4 00:16:17 localhost charon: 15[IKE] received cert request for "C=US, ST=TX, O=Test CA, CN=Test CA"
Sep 4 00:16:17 localhost charon: 15[IKE] received 316 cert requests for an unknown ca
Sep 4 00:16:17 localhost charon: 15[CFG] looking for peer configs matching AMAZONPRIV[%any]...CLIENTPUB[CLIENTPRIV]
Sep 4 00:16:17 localhost charon: 15[CFG] selected peer config 'dlpvpn'
Sep 4 00:16:17 localhost charon: 15[IKE] initiating EAP-Identity request
Sep 4 00:16:17 localhost charon: 15[IKE] peer supports MOBIKE
Sep 4 00:16:17 localhost charon: 15[IKE] authentication of 'C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com' (myself) with RSA signature successful
Sep 4 00:16:17 localhost charon: 15[IKE] sending end entity cert "C=US, ST=TX, O=DLP Test CA, CN=vpn.example.com"
Sep 4 00:16:17 localhost charon: 15[ENC] generating IKE_AUTH response 1 [ IDr CERT AUTH EAP/REQ/ID ]
Sep 4 00:16:17 localhost charon: 15[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
この時点で、Windowsはすぐにエラーメッセージをポップアップします。
Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable
数秒後、charonは再試行して接続を閉じます。
Sep 4 00:16:37 localhost charon: 16[IKE] sending keep alive
Sep 4 00:16:37 localhost charon: 16[NET] sending packet: from AMAZONPRIV[4500] to CLIENTPUB[4500]
Sep 4 00:16:47 localhost charon: 03[JOB] deleting half open IKE_SA after timeout
以上です。
私の知る限り、私はstrongSwan wikiのすべての指示に従っています。
ここで何が悪いのですか?
編集:これは間違いなく証明書の問題です。MSKB926182に記載されているようにレジストリを編集して再起動することで拡張検証チェックを無効にし(リンクが必要な場合はlol)、VPNサーバーにエラーなしで接続できるようになりました。要件を満たす証明書を生成する方法を見つけ、回答を追加します。strongSwan wikiのcertページへのポインタを教えてくれた@ecdsaに感謝します。