strongSwan IKEv2 + Windows 7 Agile VPN:エラー13801の原因


8

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に感謝します。


Windows 7クライアントのVPNプロパティのセキュリティタブはどのように見えますか?また、私の設定は同一ではありませんが、現在のユーザー証明書ストア内の証明書を使用するIKEv2があります。
0xFE

サーバー証明書はすべての要件を満たしていますか?
ecdsa

自分の問題を解決した場合は、以下に回答を投稿し、解決済みとしてマークすることを検討してください。
マイケルハンプトン

回答:


6

これを考え出した。@ecdsaが正しい方向を示してくれたので、このガイドに従うことでようやく問題を解決することができました。

ipsec pki --gen --type rsa --size 4096 --outform pem > vpnca.key.pem
ipsec pki --self --flag serverAuth --in vpnca.key.pem --type rsa --digest sha1 \
    --dn "C=US, O=Example Company, CN=Example VPN CA" --ca > vpnca.crt.der
ipsec pki --gen --type rsa --size 4096 --outform pem > vpn.example.com.key.pem
ipsec pki --pub --in vpn.example.com.key.pem --type rsa > vpn.example.com.csr
ipsec pki --issue --cacert vpnca.crt.der --cakey vpnca.key.pem --digest sha1 \
    --dn "C=US, O=Example Company, CN=vpn.example.com" \
    --san "vpn.example.com" --flag serverAuth --outform pem \
    < vpn.example.com.csr > vpn.example.com.crt.pem 
openssl rsa -in vpn.example.com.key.pem -out vpn.example.com.key.der -outform DER

cp vpnca.crt.der /etc/ipsec.d/cacerts
cp vpn.example.com.crt.pem /etc/ipsec.d/certs
cp vpn.example.com.key.der /etc/ipsec.d/private

エラーについて

、:エラーメッセージは、「IKE認証資格情報が受け入れられないエラー13801」だった響き、私のユーザーの資格情報が働いていなかったように。ただし、これはサーバーの認証に関するメッセージであり、サーバーのSSL証明書によって(構成ごとに)実行されます。Microsoftは、IKEv2 VPN接続のトラブルシューティングに関するドキュメントを公開しており、このエラーの考えられる原因がリストされています。

  • 証明書の有効期限が切れています。
  • 証明書の信頼されたルートがクライアントに存在しません。
  • 証明書のサブジェクト名がリモートコンピューターと一致しません。
  • 証明書には、必要な拡張キー使用法(EKU)値が割り当てられていません。

私の場合、問題はEKU値に関係していました。上でリンクしたガイドに従って、正しいEKU値で証明書を生成することができました。

これをトラブルシューティングするには、WindowsクライアントでEKUチェックを無効にすることができます(もちろん、これはテストのためにのみ行う必要があります)。

  • 発売 regedit
  • 案内する HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • というDWORDを追加し、DisableIKENameEkuCheckその値を1
  • Microsoftのドキュメントでは、これを実行した後に再起動するように指示されていますが、これを有効にするために再起動する必要はありませんでした。

別の考えられる原因:IPは証明書で使用されていますが、ホスト名はクライアントで使用されています。
Larsen

または、ホスト名は証明書にありますが、クライアントはそのIPアドレスに接続します。解決策:ipsec pki --isue ... --san @ipaddress
17

これらの手順を実行した後、結局私の問題は、信頼されたルートが間違った場所にインストールされ、「現在のユーザー\ TRCA」ではなく「コンピューター\信頼されたルート証明機関」にあるはずでした。
bouke

2

同じ問題があり、証明書ファイルに証明書チェーンがあることを確認することで解決しました(エンドエンティティ証明書、中間CA、ルートCA-この順序で)。TLSは楽しいです。

strongSwanを再起動した後、これは機能しなくなりましたが、中間およびルートCAをにドロップしたときに再び機能し始めました/etc/ipsec.d/cacerts


0

長い検索の結果、このスレッドはIKEv2で動作する私のWindows Phone 10(WP10)構成を取得しました!言及すべきことの1つは、Strongswanを--enable-eap-identity --enable-eap-mschapv2 --enable-openssl(そしておそらく--enable-dhcp)で./configureして、必要なプラグインを用意する必要があることです。そして、はい、証明書を正しく取得する必要があります(サーバー側で-クライアントはサーバーのルートCAを知っている必要があるだけです)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.