web-dev-qa-db-ja.com

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

VPNサーバーにしたいAWSインスタンスがあります。 Windows 7クライアントをAmazonクラウドのプライベートネットワークに接続します。

  • Ubuntu 12.04とstrongswan-ikev2パッケージをインストールしました。
  • ipsec versionレポートLinux strongSwan U4.5.2/K3.2.0-52-virtual
  • クライアントとサーバーの両方が背後にあることに注意してくださいNAT(クライアントはローカルオフィスネットワークにあるためクライアントであり、Amazonのクラウドにあるためサーバーです)ブロックされていないUDPポート500および4500があります。 Amazonダッシュボードとクライアントのファイアウォールの両方で。
  • これは/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クライアントを使用してサーバーに接続しようとします ここ ですが、1つの例外があります-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の instructions をすべてフォローしています。

ここで何が悪いのですか?

編集:これは間違いなく証明書の問題です。 MSKB926182で説明されているようにレジストリを編集して再起動することで拡張検証チェックを無効にし(リンクが必要な場合はlol)、VPNサーバーにエラーなしで接続できるようになりました。要件を満たす証明書を生成する方法を見つけ、答えを追加します。 strongSwan wikiのcertページへのポインタを教えてくれた@ecdsaに感謝します。

8

これを考え出した。 @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

エラーについて

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

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

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

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

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

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

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

2
Zanchey

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

0
Martin