Introduzione
Questo documento descrive i passaggi di configurazione per configurare FlexVPN con un client incorporato su Windows 10/11.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Client VPN incorporato di Windows
- Configurazione Cisco IOS® XE FlexVPN
- Configurazione di base di OpenSSL
Componenti usati
La guida alla configurazione si basa sulle seguenti versioni hardware e software:
- Windows 10 e Windows 11
- Cisco IOS XE 16.12.4
- OpenSSL Certificate Authority (CA) v1.1.0g
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Configurazione
Prerequisiti CA
La CA deve consentire di incorporare l'utilizzo chiavi avanzato (EKU) richiesto nel certificato. Ad esempio, sul server IKEv2 Server Auth EKU
necessario, mentre il certificato client richiede Client Auth EKU
. Le distribuzioni locali possono utilizzare:
- Server CA Cisco IOS - Impossibile utilizzare certificati autofirmati a causa dell'ID bug Cisco CSCuc82575.
- Server CA OpenSSL -
openssl.cnf
deve avere extendedKeyUsage = serverAuth, clientAuth. Questo file si trova in genere nel percorso /etc/ssl/
.
- Server CA Microsoft - In generale, questa è l'opzione preferita perché può essere configurato per firmare il certificato esattamente come desiderato.
Esempio di rete
Laboratorio di topologia
Configurazioni
Configurare una CA
Router come CA
Se si usa un server CA Cisco IOS, accertarsi di usare la versione software Cisco IOS più recente, a cui è stato assegnato l'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 come CA
La CA OpenSSL è basata sul file openssl.cnf. Il file 'config' per il server OpenSSL deve avere:
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
Configurazione del router IOS XE/IOS
Importa il certificato pkcs12 se OpenSSL
I campi EKU del certificato devono essere impostati su 'Autenticazione server' per Cisco IOS e su 'Autenticazione client' per il client. In genere, la stessa CA viene utilizzata per firmare i certificati sia del client che del server. In questo caso, sia 'Autenticazione server' che 'Autenticazione client' vengono visualizzati rispettivamente nel certificato server e nel certificato client, il che è accettabile.
Se la CA rilascia i certificati nel formato PKCS (Public-Key Cryptography Standards) #12 sul server IKEv2 ai client e al server e se l'elenco di revoche di certificati (CRL) non è raggiungibile o disponibile, è necessario configurarlo:
crypto pki trustpoint FlexRootCA
revocation-check none
Immettere questo comando per importare il certificato 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.
È inoltre possibile convertire il pkcs12 in base64 in OpenSSL e importare il certificato nel terminale:
openssl base64 -in ikev2.p12 -out ikev2.pem
cat ikev2.pem —> copia output 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
Richiedere il certificato con il router come server CA
Se un server CA Cisco IOS concede automaticamente i certificati, per poter ricevere un certificato, il server IKEv2 deve essere configurato con l'URL del server CA, come mostrato nell'esempio seguente:
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
Quando il trust point è configurato, è necessario:
- Autenticare la CA con questo comando:
crypto pki authenticate FlexRootCA
- Registrare il server IKEv2 con la CA con questo comando:
crypto pki enroll FlexRootCA
Configurazione di FlexVPN IKEv2 con autenticazione certificato
Questo è un esempio di configurazione 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
Il valore IP senza numero del modello virtuale deve essere diverso dall'indirizzo locale utilizzato per la connessione IPSec. Se si utilizza un client hardware, si scambiano le informazioni di routing tramite il nodo di configurazione IKEv2 e si crea un problema di routing ricorsivo sul client hardware.
Nota: IOS XE versione 17.06.01a ID bug Cisco CSCwa76260 e l'ID bug Cisco CSCwa80474 interferiscono con la corretta funzionalità del client predefinito di Windows in quanto utilizzano group2 come gruppo dh predefinito. Se si esegue l'aggiornamento a una versione fissa, si riceverà una notifica della futura rimozione di cifrature deprecate, ma queste potranno comunque funzionare. Ulteriori informazioni:
Configurare il client incorporato di Windows IKEv2
Client incorporato di Windows 10
1. Passare a Settings > Network & Internet > VPN
e selezionare o fare clic su Add a VPN Connection
come mostrato nell'immagine:
Impostazioni VPN di Windows
2. Configurare il provider VPN come Windows (predefinito), il nome della connessione, il nome o l'indirizzo del server, il tipo di VPN e il tipo di informazioni di accesso (autenticazione), quindi fare clic su Save
come mostrato nell'immagine.
Windows: aggiungi impostazioni VPN
3. Fare clic su Cambia opzioni adattatore e fare clic con il pulsante destro del mouse o selezionare l'adattatore denominato FlexVPN-IOS
. Passa a Properties > Security
e selezionare Use machine certificates
come mostrato nell'immagine:
Opzioni scheda di rete Windows
Il profilo FlexVPN-IOS è pronto per la connessione dopo l'importazione di un certificato nell'archivio certificati del computer.
Client incorporato di Windows 11
1. Passare a Settings > Network & internet > VPN
e selezionare o fare clic su Aggiungi VPN:
Impostazioni VPN di Windows 11
2. Configurare il provider VPN come Windows (predefinito), il nome della connessione, il nome o l'indirizzo del server, il tipo di VPN e il tipo di informazioni di accesso (autenticazione), quindi salvare:
Impostazioni connessione VPN Windows 11
3. Fare clic su Network & Internet
di nuovo, quindi Impostazioni di rete avanzate e selezionare o fare clic su More network adapter options
come mostrato nell'immagine:
Percorso di Windows 11 alle opzioni dell'adattatore
Fare clic con il pulsante destro del mouse o selezionare la scheda denominata FlexVPN-IOS e passare a Proprietà, passare a Security
e selezionare Usa certificati computer:
Opzioni scheda di rete per Windows 11
Il profilo FlexVPN-IOS è pronto per la connessione dopo l'importazione di un certificato nell'archivio certificati del computer.
Ottenere un certificato client
Il certificato client richiede i fattori seguenti:
- Il certificato client dispone di un utilizzo chiavi avanzato (EKU) per l'autenticazione client. La CA fornisce inoltre un certificato PKCS#12: il certificato PKCS12 client deve accedere all'archivio certificati personali del computer locale
Installazione certificato Windows PKCS12
1. Aprire il certificato pfx o p12:
Selezionare o fare clic sul computer locale del percorso di archiviazione:
Passaggio 1 dell'Importazione guidata certificati
2. Specificare il percorso di p12 o pfx come mostrato nell'immagine.
Passaggio 2 dell'Importazione guidata certificati
3. Digitare la password per la chiave privata come illustrato nell'immagine:
Passaggio 3 dell'Importazione guidata certificati
Nota: contrassegnare la chiave come esportabile è facoltativo.
4. Fare clic su o selezionare Place all certificates in
il Negozio personale:
Passaggio 4 dell'Importazione guidata certificati
Il pkcs12 in genere include la catena completa, la CA e i certificati intermedi. In questo caso, è necessario verificare che la CA sia installata nell'archivio delle autorità di certificazione radice attendibili.
Installazione certificato CA di Windows
Se la CA non si trova nell'archivio delle autorità di certificazione radice attendibili, eseguire la procedura seguente per installarla:
1. Aprire il file CA pem o crt e selezionare o fare clic su Installa certificato come mostrato nell'immagine.
Certificato CA
Se l'autorità di certificazione non si trova nell'archivio delle autorità di certificazione radice attendibili, verrà visualizzato questo messaggio: "Questo certificato radice dell'autorità di certificazione non è attendibile..."
2. Selezionare o fare clic sul computer locale ubicazione punto vendita:
Passaggio 1 dell'Importazione guidata certificati CA
3. Fare clic su o selezionare Place all certificates in the following store
e Trusted Root Certification Authorities
punto vendita:
Importazione guidata certificati CA - passaggio 2
4. Completare l'Importazione guidata certificati:
Passaggio 3 dell'Importazione guidata certificati CA
L'installazione del certificato può sempre essere confermata con Windows Key+R
e aperto mmc.exe
o certlm.msc
.
Dettagli importanti
- 'Intermedio IPSec IKE' (OID = 1.3.6.1.5.5.8.2.2) deve essere utilizzato come EKU se si applicano entrambe le istruzioni seguenti:
- Il server IKEv2 è un server Windows 2008.
- Più certificati di autenticazione server in uso per le connessioni IKEv2. In questo caso, inserire entrambi gli EKU di autenticazione server e di intermediazione IPSec IKE in un unico certificato oppure distribuirli tra i certificati. Verificare che almeno un certificato contenga l'utilizzo chiavi avanzato 'IPSec IKE Intermediate'.
Per ulteriori informazioni, fare riferimento a Risoluzione dei problemi delle connessioni VPN con protocollo IKEv2.
- In una distribuzione FlexVPN, non utilizzare 'IPSec IKE Intermediate' in EKU. In caso contrario, il client IKEv2 non acquisisce il certificato del server IKEv2. Di conseguenza, non sono in grado di rispondere a CERTREQ da IOS nel messaggio di risposta IKE_SA_INIT e pertanto non riescono a connettersi con un ID errore 13806.
- Sebbene non sia richiesto il nome alternativo del soggetto (SAN), è accettabile che i certificati ne abbiano uno.
- Nell'archivio certificati client Windows 10/11 verificare che nell'archivio Autorità di certificazione radice attendibili per il computer sia presente il minor numero di certificati possibile. Se il payload Cert_Req è più di 50, Cisco IOS potrebbe non essere in grado di leggere l'intero payload, che contiene il nome distinto (DN) del certificato di tutte le CA conosciute nella casella Windows 10/11. Di conseguenza, la negoziazione non riesce e sul client viene visualizzato il timeout della connessione.
Verifica
Fare riferimento a questa sezione per verificare che la configurazione funzioni correttamente.
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:
Risoluzione dei problemi
È possibile risolvere i problemi relativi alla connessione FlexVPN e alla negoziazione dei certificati con questi debug:
debug crypto condition peer <remove client public ip>
debug crypto ikev2
debug cry pki messages
debug cry pki transactions
Nel client Windows è possibile controllare il Visualizzatore eventi all'interno dei registri di Windows e controllare l'applicazione. Gli eventi di connessione VPN utilizzano il client Ras di origine. Ad esempio;
Registri di Visualizzatore eventi di Windows per RasClient