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 주소이고 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 위키의 모든 지시 사항 을 따르고 있습니다.

내가 여기서 뭘 잘못하고 있니?

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


Windows 7 클라이언트에서 VPN 속성의 보안 탭은 어떤 모양입니까? 또한 설정이 동일하지 않지만 IKEv2가 현재 사용자 인증서 저장소의 인증서로 작업하고 있습니다.
0xFE

서버 인증서가 모든 요구 사항을 충족 합니까?
ecdsa

자신의 문제를 해결 한 경우 아래에 답변을 게시하고 해결 된 것으로 표시하십시오.
Michael Hampton

답변:


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 (Enhanced Key Usage) 값이 지정되어 있지 않습니다.

제 경우에는 문제가 EKU 값과 관련이있었습니다. 맨 위에 링크 된 가이드에 따라 올바른 EKU 값을 가진 인증서를 생성 할 수 있었고 훌륭하게 작동했습니다.

이 문제를 해결하려면 Windows 클라이언트에서 EKU 검사를 비활성화 할 수 있습니다 (물론 테스트를 위해서만 수행해야 함).

  • 시작하다 regedit
  • 로 이동 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • 이라는 DWORD를 추가 DisableIKENameEkuCheck하고 값을1
  • 이 작업을 수행 한 후 다시 부팅하라는 내용의 Microsoft 설명서가 있지만이를 적용하기 위해 필요하지는 않습니다.

또 다른 가능한 원인 : IP는 인증서에서 사용되지만 호스트 이름은 클라이언트에서 사용됩니다.
라센

또는 호스트 이름이 인증서에 있지만 클라이언트가 해당 IP 주소에 연결합니다. 해결책 :ipsec pki --isue ... --san @ipaddress
bouke

이 단계를 수행 한 후 결국 내 문제는 신뢰할 수있는 루트가 잘못된 위치에 설치되었다는 것입니다. "현재 사용자 \ TRCA"가 아니라 "컴퓨터 \ 신뢰할 수있는 루트 인증 기관"에 있어야합니다.
bouke

2

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

strongSwan을 다시 시작한 후에는 작동이 중지되었지만 중간 및 루트 CA를에 놓으면 다시 작동하기 시작했습니다 /etc/ipsec.d/cacerts.


0

긴 검색 후이 스레드는 IKEv2에서 작동하는 Windows Phone 10 (WP10) 구성을 갖습니다! 언급 할 한 가지 사항은 --sable-eap-identity --enable-eap-mschapv2 --enable-openssl (및 아마도 --enable-dhcp)로 Strongswan을 ./ 구성하여 필요한 플러그인을 갖도록해야한다는 것입니다. 그리고 네, 인증서를 올바르게 가져와야합니다 (서버 측-클라이언트는 서버의 루트 CA 만 알아야합니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.