Introduction
Ce document décrit les étapes de configuration pour configurer FlexVPN avec un client intégré sur Windows 10/11.
Conditions préalables
Exigences
Cisco vous recommande d'avoir des connaissances sur les sujets suivants :
- Client VPN intégré à Windows
- Configuration FlexVPN de Cisco IOS® XE
- Configuration de base OpenSSL
Composants utilisés
Le guide de configuration est basé sur les versions matérielles et logicielles suivantes :
- Windows 10 et Windows 11
- Cisco IOS XE 16.12.4
- Autorité de certification OpenSSL v1.1.0g
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Configurer
Conditions préalables CA
L'autorité de certification doit vous permettre d'incorporer l'utilisation de clé étendue (EKU) requise dans le certificat. Par exemple, sur le serveur IKEv2, Server Auth EKU
est nécessaire, alors que le certificat client a besoin Client Auth EKU
. Les déploiements locaux peuvent utiliser les éléments suivants :
- Serveur Cisco IOS CA : les certificats auto-signés ne peuvent pas être utilisés en raison de l'ID de bogue Cisco CSCuc82575.
- Serveur AC OpenSSL -
openssl.cnf
doit avoir extendedKeyUsage = serverAuth, clientAuth, ce fichier se trouve normalement dans le chemin /etc/ssl/
.
- Serveur d'autorité de certification Microsoft : en général, il s'agit de l'option préférée, car elle peut être configurée pour signer le certificat exactement comme vous le souhaitez.
Diagramme du réseau
TP de topologie
Configurations
Configurer une autorité de certification
Routeur en tant que CA
Si vous utilisez un serveur Cisco IOS CA, assurez-vous d'utiliser la version la plus récente du logiciel Cisco IOS, qui attribue l'UKE.
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 en tant que CA
La CA OpenSSL est basée sur le fichier openssl.cnf. Le fichier 'config' du serveur OpenSSL doit avoir :
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
Configuration du routeur IOS XE/IOS
Importer le certificat pkcs12 si OpenSSL
Les champs EKU du certificat doivent être définis sur « Authentification du serveur » pour Cisco IOS et sur « Authentification du client » pour le client. En général, la même autorité de certification est utilisée pour signer les certificats client et serveur. Dans ce cas, 'Authentification du serveur' et 'Authentification du client' apparaissent respectivement sur le certificat du serveur et le certificat du client, ce qui est acceptable.
Si l’autorité de certification émet les certificats au format PKCS (Public-Key Cryptography Standards) #12 sur le serveur IKEv2 vers les clients et le serveur, et si la liste de révocation de certificats (CRL) n’est pas accessible ou disponible, elle doit être configurée :
crypto pki trustpoint FlexRootCA
revocation-check none
Entrez cette commande afin d'importer le certificat 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.
Vous pouvez également convertir le pkcs12 en base64 dans OpenSSL et importer le certificat dans le terminal :
openssl base64 -in ikev2.p12 -out ikev2.pem
cat ikev2.pem —> copiez le résultat de base64
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
Demander le certificat avec le routeur comme serveur AC
Si un serveur AC Cisco IOS accorde automatiquement des certificats, le serveur IKEv2 doit être configuré avec l'URL du serveur AC afin de recevoir un certificat, comme illustré dans cet exemple :
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
Lorsque le point de confiance est configuré, vous devez :
- Authentifiez l'autorité de certification avec cette commande :
crypto pki authenticate FlexRootCA
- Inscrivez le serveur IKEv2 auprès de l'autorité de certification à l'aide de cette commande :
crypto pki enroll FlexRootCA
Configuration de FlexVPN IKEv2 avec authentification par certificat
Voici un exemple de configuration 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
L'adresse IP non numérotée du modèle virtuel doit être autre que l'adresse locale utilisée pour la connexion IPsec. (Si vous utilisez un client matériel, vous échangeriez des informations de routage via le noeud de configuration IKEv2 et créeriez un problème de routage récursif sur le client matériel).
Remarque : IOS XE version 17.06.01a ID de bogue Cisco CSCwa76260 et le bogue Cisco ayant l'ID CSCwa80474 interfèrent avec le bon fonctionnement du client intégré de Windows puisqu'ils utilisent le groupe 2 comme groupe dh par défaut. Avec une mise à niveau vers une version fixe, vous êtes averti de la suppression future des chiffrements déconseillés, mais ils peuvent toujours fonctionner. Informations supplémentaires:
Configuration du client intégré Windows IKEv2
Client intégré à Windows 10
1. Accédez à Settings > Network & Internet > VPN
, puis cliquez sur ou sélectionnez Add a VPN Connection
comme l'illustre l'image :
Paramètres VPN Windows
2. Configurez le fournisseur VPN en tant que Windows (intégré), le nom de la connexion, le nom ou l'adresse du serveur, le type de VPN et le type d'informations de connexion (authentification), puis cliquez sur Save
comme illustré dans l'image.
Windows ajoute des paramètres VPN
3. Cliquez sur Modifier les options de la carte et cliquez avec le bouton droit de la souris ou sélectionnez la carte appelée FlexVPN-IOS
. Naviguez jusqu'à Properties > Security
et sélectionnez Use machine certificates
comme l'illustre l'image :
Options de carte Windows
Le profil FlexVPN-IOS est maintenant prêt à être connecté après l'importation d'un certificat dans le magasin de certificats de l'ordinateur.
Client intégré à Windows 11
1. Accédez à Settings > Network & internet > VPN
et cliquez sur ou sélectionnez Add VPN :
Paramètres VPN de Windows 11
2. Configurez le fournisseur VPN en tant que Windows (intégré), le nom de la connexion, le nom ou l'adresse du serveur, le type VPN et le type d'informations de connexion (authentification), puis enregistrez :
Paramètres de connexion VPN Windows 11
3. Cliquez sur Network & Internet
, puis Paramètres réseau avancés et cliquez sur ou sélectionnez More network adapter options
comme l'illustre l'image :
Chemin Windows 11 vers les options de carte
Cliquez avec le bouton droit de la souris ou sélectionnez la carte appelée FlexVPN-IOS et accédez aux propriétés, accédez à Security
et sélectionnez Utiliser les certificats d'ordinateur :
Options de carte pour Windows 11
Le profil FlexVPN-IOS est maintenant prêt à être connecté après l'importation d'un certificat dans le magasin de certificats de l'ordinateur.
Obtenir un certificat client
Le certificat client nécessite les facteurs suivants :
- Le certificat client a une UKE de 'Authentification client'. En outre, l'autorité de certification fournit un certificat PKCS#12 : le certificat PKCS12 du client doit être placé dans le magasin de certificats personnel de l'ordinateur local
Installation du certificat Windows PKCS12
1. Ouvrez le certificat pfx ou p12 :
Cliquez sur ou sélectionnez l'ordinateur local Emplacement du magasin :
Assistant Importation de certificat étape 1
2. Spécifiez le chemin d'accès de l'image p12 ou pfx comme indiqué dans l'image.
Assistant Importation de certificat étape 2
3. Tapez le mot de passe de la clé privée comme indiqué dans l'image :
Assistant Importation de certificat étape 3
Remarque : vous pouvez marquer la clé comme étant exportable (facultatif).
4. Cliquez sur ou sélectionnez Place all certificates in
le magasin personnel :
Assistant Importation de certificat étape 4
Le pkcs12 inclut généralement la chaîne complète, l'autorité de certification et les certificats intermédiaires. Si tel est le cas, vous devez vous assurer que l'autorité de certification est installée dans le magasin d'autorités de certification racine de confiance.
Installation du certificat CA Windows
Si l'autorité de certification ne se trouve pas dans le magasin des autorités de certification racine de confiance, procédez comme suit pour l'installer :
1. Ouvrez le fichier CA pem ou crt et cliquez sur ou sélectionnez Installer le certificat comme indiqué dans l'image.
certificat d'autorité de certification
Si l'autorité de certification ne figure pas dans le magasin d'autorités de certification racine de confiance, le message suivant s'affiche : "Ce certificat racine d'autorité de certification n'est pas approuvé...."
2. Cliquez sur ou sélectionnez l'ordinateur local Emplacement du magasin :
Assistant Importation de certificat CA, étape 1
3. Cliquez sur ou sélectionnez Place all certificates in the following store
et Trusted Root Certification Authorities
stocker :
Assistant Importation de certificat CA, étape 2
4. Exécutez l'Assistant Importation de certificat :
Assistant Importation de certificat CA, étape 3
L'installation du certificat peut toujours être confirmée par Windows Key+R
et ouvrir mmc.exe
ou certlm.msc
.
Détails importants
- 'IPSec IKE intermediaire' (OID = 1.3.6.1.5.5.8.2.2) doit être utilisé comme EKU si les deux instructions suivantes s'appliquent :
- Le serveur IKEv2 est un serveur Windows 2008.
- Plusieurs certificats d'authentification de serveur sont utilisés pour les connexions IKEv2. Si cela est vrai, placez l'EKU 'Authentification du serveur' et l'EKU 'IPSec IKE Intermédiaire' sur un certificat, ou distribuez ces EKU parmi les certificats. Assurez-vous qu'au moins un certificat contient l'unité EKU « IPSec IKE Intermediate ».
Référez-vous à Dépannage des connexions VPN IKEv2 pour plus d'informations.
- Dans un déploiement FlexVPN, n'utilisez pas « IPSec IKE Intermediate » dans EKU. Dans ce cas, le client IKEv2 ne récupère pas le certificat du serveur IKEv2. Par conséquent, ils ne sont pas en mesure de répondre à CERTREQ depuis IOS dans le message de réponse IKE_SA_INIT et ne parviennent donc pas à se connecter avec un ID d'erreur 13806.
- Bien que le nom alternatif du sujet (SAN) ne soit pas requis, il est acceptable que les certificats en aient un.
- Sur le magasin de certificats client Windows 10/11, assurez-vous que le magasin d'autorités de certification racine de confiance a le moins de certificats possible. S'il en possède plus de 50, Cisco IOS risque de ne pas pouvoir lire l'intégralité de la charge utile Cert_Req, qui contient le nom distinctif (DN) de certificat de toutes les autorités de certification connues de la zone Windows 10/11. Par conséquent, la négociation échoue et vous voyez le délai de connexion sur le client.
Vérifier
Utilisez cette section pour confirmer que votre configuration fonctionne correctement.
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:
Dépannage
Vous pouvez dépanner la connexion FlexVPN et la négociation de certificat avec ces débogages :
debug crypto condition peer <remove client public ip>
debug crypto ikev2
debug cry pki messages
debug cry pki transactions
Dans le client Windows, vous pouvez vérifier l'Observateur d'événements sous les Journaux Windows et vérifier l'Application, les événements de connexion VPN utilisent le RasClient source. Exemple ;
Journaux Windows EventViewer pour RasClient