StrongSwan IKEv2 + Windows 7 Agile VPN: 오류 13801의 원인

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 클라우드에 있기 때문에). 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 주소이고 AMAZONPRIV는 서버의 프라이빗 IP 주소입니다(서버의 퍼블릭 IP(Amazon은 이를 "탄력적 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 위키에 있습니다.

내가 여기서 뭘 잘못하고 있는 걸까?

편집: 이것은 확실히 인증서에 문제가 있습니다. MSKB926182(링크를 원하시면 ㅋㅋㅋ)에 설명된 대로 레지스트리를 편집하고 재부팅하여 확장 유효성 검사를 비활성화했으며 이제 오류 없이 VPN 서버에 연결할 수 있습니다. 요구 사항을 충족하는 인증서를 생성하는 방법을 알아보고 답변을 추가하겠습니다. 올바른 방향을 알려준 StrongSwan wiki의 인증서 페이지에 대한 포인터를 제공한 @ecdsa에게 감사드립니다.

답변1

이것을 알아 냈습니다. @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
  • 라는 DWORD를 추가 DisableIKENameEkuCheck하고 해당 값을 다음으로 설정합니다.1
  • Microsoft 설명서에서는 이 작업을 수행한 후 재부팅하라고 지시하지만 이 작업을 적용하기 위해 재부팅할 필요는 없었습니다.

답변2

나는 동일한 문제가 있었고 인증서 파일에 인증서 체인(최종 엔터티 인증서, 중간 CA, 루트 CA - 순서대로)이 있는지 확인하여 문제를 해결했습니다. TLS는 재미있습니다.

StrongSwan을 다시 시작한 후 작동이 중지되었지만 중간 및 루트 CA를 /etc/ipsec.d/cacerts.

답변3

오랜 검색 끝에 이 스레드에서 IKEv2와 함께 작동하는 Windows Phone 10(WP10) 구성을 얻었습니다! 언급해야 할 한 가지는 필요한 플러그인을 갖기 위해 --enable-eap-identity --enable-eap-mschapv2 --enable-openssl(그리고 아마도 --enable-dhcp)을 사용하여 Strongswan을 ./configure해야 한다는 것입니다. 그리고 예, 올바른 인증서를 얻어야 합니다(서버 측에서 클라이언트는 서버의 루트 CA만 알면 됩니다).

관련 정보