Introducción
Este documento describe los pasos de configuración para configurar FlexVPN con un cliente integrado en Windows 10/11.
Prerequisites
Requirements
Cisco recomienda que conozca estos temas:
- Cliente VPN incorporado de Windows
- Configuración de FlexVPN de Cisco IOS® XE
- Configuración básica de OpenSSL
Componentes Utilizados
La guía de configuración se basa en las siguientes versiones de hardware y software:
- Windows 10 y Windows 11
- Cisco IOS XE 16.12.4
- OpenSSL Certificate Authority (CA) v1.1.0g
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Configurar
Requisitos previos de CA
La CA debe permitirle incrustar el uso extendido de claves (EKU) requerido en el certificado. Por ejemplo, en el servidor IKEv2, Server Auth EKU
es obligatorio, mientras que el certificado del cliente necesita Client Auth EKU
. Las implementaciones locales pueden hacer uso de:
- Servidor de CA de Cisco IOS: no se pueden utilizar certificados autofirmados debido al Id. de error de Cisco CSCuc82575.
- Servidor de CA OpenSSL:
openssl.cnf
debe tener extendedKeyUsage = serverAuth, clientAuth, este archivo normalmente se encuentra en la ruta /etc/ssl/
.
- Servidor de CA de Microsoft: en general, esta es la opción preferida, ya que se puede configurar para firmar el certificado exactamente como se desee.
Diagrama de la red
Laboratorio de topología
Configuraciones
Configuración de una CA
Router como CA
Si utiliza un servidor de CA de Cisco IOS, asegúrese de utilizar la versión más reciente del software de Cisco IOS, que asigna la EKU.
IOS-CA# show run | section crypto pki
crypto pki server IOS-CA
issuer-name cn=IOS-CA.cisco.com,ou=TAC,o=cisco
grant auto
eku server-auth client-auth
OpenSSL como CA
OpenSSL CA se basa en el archivo openssl.cnf. El archivo 'config' para el servidor OpenSSL debe tener:
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
Configuración del router IOS XE/IOS
Importe el certificado pkcs12 si OpenSSL
El certificado debe tener los campos EKU establecidos en 'Autenticación de servidor' para Cisco IOS y 'Autenticación de cliente' para el cliente. Normalmente, se utiliza la misma CA para firmar los certificados de cliente y de servidor. En este caso, tanto 'Autenticación del servidor' como 'Autenticación del cliente' se ven en el certificado del servidor y el certificado del cliente respectivamente, lo cual es aceptable.
Si la CA emite los certificados en formato PKCS (Public-Key Cryptography Standards, estándares de criptografía de clave pública) #12 en el servidor IKEv2 para los clientes y el servidor, y si la lista de revocación de certificados (CRL) no es accesible o no está disponible, se debe configurar:
crypto pki trustpoint FlexRootCA
revocation-check none
Ingrese este comando para importar el certificado PKCS#12:
copy ftp://user:***@OpenSSLServer/p12/FlexRootCA.p12* flash:/
crypto pki import FlexRootCA pkcs12 flash:/FlexRootCA.p12 password
!! Note: FlexRootCA.p12 is a pkcs12 format certificate that has CA Certificate bundled in it.
También puede convertir el pkcs12 a base64 en OpenSSL e importar el certificado en el terminal:
openssl base64 -in ikev2.p12 -out ikev2.pem
cat ikev2.pem —> copy the base64 output
crypto pki trustpoint FlexRootCA
enrollment terminal
revocation-check none
crypto pki import FlexRootCA pkcs12 terminal password
***paste the base64 output from the cat ikev2.pem here***
quit --> when the paste ends you need to type quit to finish
Solicite el certificado con el router como servidor de la CA
Si un servidor de CA de Cisco IOS otorga certificados automáticamente, el servidor IKEv2 debe configurarse con la URL del servidor de CA para recibir un certificado como se muestra en este ejemplo:
crypto pki trustpoint FlexRootCA
enrollment url http://
:80
subject-name cn=ikev2.cisco.com,ou=TAC,o=cisco
revocation-check none
eku server-auth client-auth
Cuando se configura el punto de confianza, debe:
- Autentique la CA con este comando:
crypto pki authenticate FlexRootCA
- Inscriba el servidor IKEv2 con la CA con este comando:
crypto pki enroll FlexRootCA
Configuración de FlexVPN IKEv2 con autenticación de certificados
Este es un ejemplo de una configuración IKEv2:
aaa authorization network winclient local
ip local pool mypool 172.16.0.101 172.16.0.250
!! Certificate MAP to match Remote Certificates, in our case the Windows Clients
crypto pki certificate map winclient_map 10
subject-name co ou = tac
!! One of the proposals that Windows 10/11 Built-In Client Likes
crypto ikev2 proposal winclient
encryption aes-cbc-256
integrity sha1
group 2
crypto ikev2 policy winclient
proposal winclient
!! IKEv2 Local Authorization Policy. Split-Tunneling does not work, as was
!! the case in good old l2tp over IPSec.
crypto ikev2 authorization policy winclient_author
pool mypool
crypto ikev2 profile winclient-rsa
match certificate winclient_map
identity local fqdn ikev2.cisco.com
authentication local rsa-sig
authentication remote rsa-sig
pki trustpoint FlexRootCA
aaa authorization group cert list winclient winclient_author
virtual-template 1
crypto ipsec transform-set aes256-sha1 esp-aes 256 esp-sha-hmac
crypto ipsec profile winclient_ikev2
set transform-set aes256-sha1
set ikev2-profile winclient-rsa
interface Virtual-Template1 type tunnel
ip unnumbered Loopback0
tunnel mode ipsec ipv4
tunnel protection ipsec profile winclient_ikev2
La dirección IP sin numerar de la plantilla virtual debe ser cualquier cosa excepto la dirección local utilizada para la conexión IPsec. (Si utiliza un cliente de hardware, intercambiaría información de ruteo a través del nodo de configuración IKEv2 y crearía un problema de ruteo recursivo en el cliente de hardware).
Nota: IOS XE versión 17.06.01a Id. de error de Cisco CSCwa76260 y el Id. de error de Cisco CSCwa80474 interfieren con la funcionalidad adecuada del cliente integrado de Windows, ya que utilizan group2 como grupo dh predeterminado. Con una actualización a una versión fija, se le notifica sobre la futura eliminación de los cifrados obsoletos, pero aún pueden funcionar. Información adicional:
Configuración del cliente integrado de Windows IKEv2
Cliente integrado de Windows 10
1. Acceda a Settings > Network & Internet > VPN
y haga clic en o seleccione Add a VPN Connection
como se muestra en la imagen:
Configuración de VPN de Windows
2. Configure el proveedor de VPN como Windows (integrado), el nombre de la conexión, el nombre o la dirección del servidor, el tipo de VPN y el tipo de información de inicio de sesión (autenticación) y, a continuación, haga clic en Save
como se muestra en la imagen.
Windows agrega la configuración VPN
3. Haga clic en cambiar opciones de adaptador y haga clic con el botón derecho o seleccione el adaptador llamado FlexVPN-IOS
. Desplácese hasta Properties > Security
y seleccione Use machine certificates
como se muestra en la imagen:
Opciones de adaptador de Windows
El perfil FlexVPN-IOS está listo para conectarse después de importar un certificado al almacén de certificados del equipo.
Cliente integrado de Windows 11
1. Acceda a Settings > Network & internet > VPN
y haga clic en Agregar VPN o seleccione dicha opción:
Configuración de VPN de Windows 11
2. Configure el proveedor de VPN como Windows (integrado), el nombre de la conexión, el nombre o la dirección del servidor, el tipo de VPN y el tipo de información de inicio de sesión (autenticación) y, a continuación, guarde:
Configuración de la conexión VPN de Windows 11
3. Haga clic Network & Internet
de nuevo, seleccione Configuración de red avanzada y haga clic en o seleccione More network adapter options
como se muestra en la imagen:
Opciones de ruta del adaptador para Windows 11
Haga clic con el botón derecho del ratón o seleccione el adaptador llamado FlexVPN-IOS y desplácese hasta Propiedades, vaya a Security
y seleccione Usar certificados de equipo:
Opciones de adaptador de Windows 11
El perfil FlexVPN-IOS está listo para conectarse después de importar un certificado al almacén de certificados del equipo.
Obtener un certificado de cliente
El certificado de cliente requiere estos factores:
- El certificado de cliente tiene una EKU de 'Autenticación de cliente'. Además, la CA proporciona un certificado PKCS#12: el certificado PKCS12 del cliente debe entrar en el almacén de certificados personales de la máquina local
Instalación de certificados PKCS12 de Windows
1. Abra el certificado pfx o p12:
Haga clic en o seleccione la ubicación de la tienda Máquina local:
Paso 1 del Asistente para importación de certificados
2. Especifique la trayectoria del p12 o pfx como se muestra en la imagen.
Paso 2 del Asistente para importación de certificados
3. Escriba la contraseña para la clave privada como se muestra en la imagen:
Paso 3 del Asistente para importación de certificados
Nota: marcar la clave como exportable es opcional.
4. Haga clic o seleccione Place all certificates in
la tienda Personal:
Paso 4 del Asistente para importación de certificados
El pkcs12 generalmente incluye la cadena completa, CA y certificados intermedios. Si ese es el caso, debe asegurarse de que la CA esté instalada en el almacén de autoridades de certificados raíz de confianza.
Instalación del certificado de CA de Windows
En caso de que la CA no esté en el almacén de autoridades de certificados raíz de confianza, siga estos pasos para instalarla:
1. Abra el archivo CA pem o crt y haga clic o seleccione Install Certificate (Instalar certificado) como se muestra en la imagen.
certificado de CA
Si la CA no está en el almacén de autoridades de certificados raíz de confianza, verá este mensaje: "This CA Root certificate is not trusted...."
2. Haga clic en o seleccione la ubicación de almacén Máquina local:
Paso 1 del asistente de importación de certificados de CA
3. Haga clic o seleccione Place all certificates in the following store
y Trusted Root Certification Authorities
tienda:
Paso 2 del asistente de importación de certificados de CA
4. Finalice el Asistente de Importación de Certificados:
Paso 3 del asistente de importación de certificados de CA
La instalación del certificado siempre se puede confirmar con Windows Key+R
y abierto mmc.exe
or certlm.msc
.
Detalles importantes
- 'IPSec IKE intermedio' (OID = 1.3.6.1.5.5.8.2.2) debe utilizarse como EKU si se aplican estas dos sentencias:
- El servidor IKEv2 es un servidor Windows 2008.
- Hay más de un certificado de autenticación de servidor en uso para las conexiones IKEv2. Si esto es cierto, coloque la EKU 'Autenticación del servidor' y la EKU 'Intermedio IKE IPSec' en un certificado o distribuya estas EKU entre los certificados. Asegúrese de que al menos un certificado contenga EKU 'IPSec IKE Intermedio'.
Consulte Troubleshooting de Conexiones VPN IKEv2 para obtener más información.
- En una implementación de FlexVPN, no utilice 'IPSec IKE Intermedio' en EKU. Si lo hace, el cliente IKEv2 no recoge el certificado de servidor IKEv2. Como resultado, no pueden responder a CERTREQ desde IOS en el mensaje de respuesta IKE_SA_INIT y, por lo tanto, no pueden conectarse con un ID de error 13806.
- Aunque el nombre alternativo del sujeto (SAN) no es obligatorio, es aceptable si los certificados tienen uno.
- En el Almacén de certificados de cliente de Windows 10/11, asegúrese de que el Almacén de autoridades de certificados raíz de confianza en el equipo tenga el menor número posible de certificados. Si tiene más de 50 o más, es posible que Cisco IOS no pueda leer la carga completa Cert_Req, que contiene el nombre distinguido (DN) de certificado de todas las CA conocidas del cuadro Windows 10/11. Como resultado, la negociación falla y se ve el tiempo de espera de la conexión en el cliente.
Verificación
Utilize esta sección para confirmar que su configuración funcione correctamente.
CSR1Kv# show crypto ikev2 session detail
IPv4 Crypto IKEv2 Session
Session-id:6, Status:UP-ACTIVE, IKE count:1, CHILD count:1
Tunnel-id Local Remote fvrf/ivrf Status
1 10.0.3.1/4500 192.168.56.1/4500 none/none READY
Encr: AES-CBC, keysize: 256, Hash: SHA96, DH Grp:2, Auth sign: RSA, Auth verify: RSA
Life/Active Time: 86400/5s 7 sec
CE id: 1007, Session-id: 6
Status Description: Negotiation done
Local spi: 3A330D1951062E50 Remote spi: 222ED6C38002E26D
Local id: ikev2.cisco.com
Remote id: ou=TAC,o=Cisco,c=BE,cn=Winclient
Local req msg id: 0 Remote req msg id: 2
Local next msg id: 0 Remote next msg id: 2
Local req queued: 0 Remote req queued: 2
Local window: 5 Remote window: 1
DPD configured for 0 seconds, retry 0
NAT-T is not detected
Cisco Trust Security SGT is disabled
Assigned host addr: 172.16.0.105
Initiator of SA : No
Child sa: local selector 0.0.0.0/0 - 255.255.255.255/65535
remote selector 172.16.0.105/0 - 172.16.0.105/65535
ESP spi in/out: 0xB01348F5/0x142CEC36
AH spi in/out: 0x0/0x0
CPI in/out: 0x0/0x0
Encr: AES-CBC, keysize: 128, esp_hmac: SHA96
ah_hmac: None, comp: IPCOMP_NONE, mode tunnel
CSR1Kv#show crypto ipsec sa peer 192.168.56.1
interface: Virtual-Access1
Crypto map tag: Virtual-Access1-head-0, local addr 10.0.3.1
protected vrf: (none)
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (172.16.0.105/255.255.255.255/0/0)
current_peer 192.168.56.1 port 4500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 223, #pkts encrypt: 223, #pkts digest: 223
#pkts decaps: 315, #pkts decrypt: 315, #pkts verify: 315
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.0.3.1, remote crypto endpt.: 192.168.56.1
plaintext mtu 1438, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1
current outbound spi: 0x142CEC36(338488374)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0xB01348F5(2954053877)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2017, flow_id: CSR:17, sibling_flags FFFFFFFF80000048, crypto map: Virtual-Access1-head-0
sa timing: remaining key lifetime (k/sec): (4607961/2461)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x142CEC36(338488374)
transform: esp-aes esp-sha-hmac ,
in use settings ={Tunnel, }
conn id: 2018, flow_id: CSR:18, sibling_flags FFFFFFFF80000048, crypto map: Virtual-Access1-head-0
sa timing: remaining key lifetime (k/sec): (4607987/2461)
IV size: 16 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
Troubleshoot
Puede resolver problemas de la conexión FlexVPN y la negociación de certificados con estos debugs:
debug crypto condition peer <remove client public ip>
debug crypto ikev2
debug cry pki messages
debug cry pki transactions
En el cliente de Windows, puede verificar el Visor de eventos en los Registros de Windows y verificar la Aplicación, los eventos de conexión VPN utilizan el origen RasClient. Por ejemplo;
Registros del visor de eventos de Windows para RasClient