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.