strongSwan IKEv2 + Windows 7 Agile VPN: ¿Qué está causando el error 13801?

strongSwan IKEv2 + Windows 7 Agile VPN: ¿Qué está causando el error 13801?

Tengo una instancia de AWS que quiero que sea un servidor VPN. Conectará clientes de Windows 7 a una red privada en la nube de Amazon.

  • He instalado Ubuntu 12.04 y el strongswan-ikev2paquete.
  • ipsec versioninformesLinux strongSwan U4.5.2/K3.2.0-52-virtual
  • Tenga en cuenta que tanto el cliente como el servidor están detrás de NAT (el cliente porque está en la red de una oficina local y el servidor porque está en la nube de Amazon). Desbloqueé los puertos UDP 500 y 4500 tanto en el panel de Amazon como en el firewall del cliente.
  • Este es /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
    
  • Este es /etc/ipsec.secrets:

    : RSA openssl-key.rsa
    TESTDOMAIN\testuser : EAP "testpassword"
    
  • Agregué el certificado de CA que firmó el certificado de host del servidor al almacén de certificados de la máquina local (no del usuario) para que Windows pueda autenticar el servidor.

Luego intento conectarme al servidor usando el cliente de Windows 7 según lo prescrito.aquí, con una excepción: estoy usando el nombre DNS en lugar de la dirección IP. Ingreso el nombre de usuario, el dominio y la contraseña en mi archivo ipsec.secrets e intenta conectarse.

Cuando lo hace, obtengo registros de strongSwan que se ven así. Los modifiqué un poco tanto por censura como por claridad; CLIENTPUB/CLIENTPRIV son las direcciones IP públicas y privadas del cliente y AMAZONPRIV es la dirección IP privada del servidor (que es a lo que reenvía la IP pública del servidor (Amazon llama a esto una "IP elástica").

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]

En este punto, Windows muestra inmediatamente un mensaje de error:

Verifying user name and password...
Error 13801: IKE authentication credentials are unacceptable

Después de unos segundos, Charon vuelve a intentarlo y luego cierra la conexión.

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

Y eso es.

Por lo que puedo decir, estoy siguiendo todos losinstruccionesen la wiki de strongSwan.

¿Qué estoy haciendo mal aquí?

Editar: esto es definitivamente un problema con los certificados. Deshabilité las comprobaciones de validación extendida editando el registro y reiniciando como se describe en MSKB926182 (risas, si querías un enlace a eso) y ahora puedo conectarme a mi servidor VPN sin errores. Descubriré cómo generar certificados que satisfagan los requisitos y agregaré una respuesta. Gracias a @ecdsa por indicarme la página del certificado en la wiki de strongSwan que me indicó la dirección correcta.

Respuesta1

Descubrí esto. @ecdsa me indicó la dirección correcta y finalmente pude resolver el problema siguiendoesta guía.

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

Sobre el error

El mensaje de error fue "Error 13801: las credenciales de autenticación IKE son inaceptables", quesonócomo si mis credenciales de usuario no funcionaran. Sin embargo, este es un mensaje sobre la autenticación.el servidor, que se realiza (según mi configuración) mediante el certificado SSL del servidor. Microsoft ha publicado documentación sobreSolución de problemas de conexiones VPN IKEv2que enumera las posibles causas de este error:

  • El certificado ha caducado.
  • La raíz confiable del certificado no está presente en el cliente.
  • El nombre del sujeto del certificado no coincide con la computadora remota.
  • El certificado no tiene asignados los valores de uso de clave mejorado (EKU) requeridos.

En mi caso mi problema tenía que ver con los valores de EKU. Siguiendo la guía que vinculé en la parte superior, pude generar un certificado con los valores EKU correctos y funcionó muy bien.

Para solucionar este problema, puede desactivar la comprobación de EKU en su cliente Windows (por supuesto, esto sólo debe hacerse para realizar pruebas):

  • Lanzamientoregedit
  • Navegar aHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters
  • Agregue un DWORD llamado DisableIKENameEkuChecky establezca su valor en1
  • La documentación de Microsoft le indica que reinicie después de hacer esto, pero no fue necesario para que esto surtiera efecto.

Respuesta2

Tuve un problema idéntico y lo resolví asegurándome de tener la cadena de certificados en el archivo del certificado (certificado de entidad final, CA intermedia, CA raíz, en ese orden). TLS es divertido.

Después de reiniciar strongSwan, esto dejó de funcionar, pero comenzó a funcionar nuevamente cuando coloqué la CA intermedia y raíz en /etc/ipsec.d/cacerts.

Respuesta3

Después de una larga búsqueda, ¡este hilo hizo que mi configuración de Windows Phone 10 (WP10) funcionara con IKEv2! Una cosa a mencionar podría ser que debe ./configurar su Strongswan con --enable-eap-identity --enable-eap-mschapv2 --enable-openssl (y probablemente --enable-dhcp) para tener los complementos necesarios. Y sí, necesita obtener los certificados correctos (en el lado del servidor, el cliente solo necesita conocer la CA raíz del servidor).

información relacionada