In questo documento vengono descritti i processi di scambio dei pacchetti IKEv1 (Internet Key Exchange versione 1) e IKEv2 (Internet Key Exchange versione 2) quando si utilizza l'autenticazione dei certificati e i possibili problemi.
Di seguito è riportato un elenco degli argomenti descritti nel presente documento:
Cisco raccomanda la conoscenza dei seguenti argomenti:
Il riferimento delle informazioni contenute in questo documento è Cisco IOS versione 15.3T.
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.
I problemi descritti in questo documento si verificano quando si utilizzano più trust point e più profili IKE.
Gli esempi iniziali utilizzati in questo documento hanno un tunnel LAN-LAN IKEv1 con due trust point su ciascun router. A prima vista, potrebbe sembrare che la configurazione sia corretta. Tuttavia, il tunnel VPN può essere avviato solo da un lato della connessione perché il comando ca trust-point viene utilizzato per il comportamento del profilo ISAKMP (Internet Security Association and Key Management Protocol) e per l'ordine dei certificati registrati nell'archivio locale.
Quando il router è l'iniziatore ISAKMP, il comando ca trust-point per il profilo ISAKMP prevede un comportamento diverso. È possibile che si sia verificato un problema perché l'iniziatore ISAKMP riconosce il profilo ISAKMP dall'inizio, quindi il comando ca trust-point configurato per il profilo può influenzare il payload per la richiesta di certificato nel pacchetto 3 in modalità principale (MM3). Tuttavia, quando il router è il risponditore ISAKMP, associa il traffico in entrata a un profilo ISAKMP specifico dopo aver ricevuto il pacchetto 5 in modalità principale (MM5), che include l'ID IKE necessario per creare il binding. Per questo motivo non è possibile applicare alcun comando ca trust-point per il pacchetto Modalità principale 4 (MM4) perché il profilo non viene determinato prima di M5.
In questo documento viene spiegato l'ordine del payload della richiesta di certificato in MM3 e MM4 e l'impatto sull'intero processo di negoziazione, nonché il motivo per cui consente di stabilire la connessione solo da un lato del tunnel VPN.
Di seguito è riportato un riepilogo dei comportamenti dell'iniziatore IKEv1 e del risponditore:
Iniziatore IKEv1 | Risponditore IKEv1 | |
Invia richiesta | Invia richieste specifiche solo per i trust point configurati nel profilo | Invia richieste per tutti i trust point disponibili |
Convalida richiesta | Esegue la convalida in base a trust point specifici configurati nel profilo | Esegue la convalida in base a trust point specifici configurati nel profilo |
Cisco consiglia di non utilizzare il comando ca trust-point per i risponditori ISAKMP con più profili ISAKMP e che utilizzano trust-point configurati globalmente. Per gli iniziatori ISAKMP con più profili ISAKMP, Cisco consiglia di limitare il processo di selezione dei certificati con il comando ca trust-point in ciascun profilo.
Il protocollo IKEv2 presenta gli stessi problemi del protocollo IKEv1, ma il diverso comportamento del comando pki trustpoint consente di evitare il verificarsi dei problemi. Infatti, il comando pki trustpoint è obbligatorio per l'iniziatore IKEv2, mentre il comando ca trust-point è facoltativo per l'iniziatore IKEv1. In alcune circostanze (più trust point in un unico profilo) potrebbero verificarsi i problemi descritti in precedenza. Per questo motivo, Cisco consiglia di utilizzare configurazioni di trust point simmetriche per entrambi i lati della connessione (gli stessi trust point configurati in entrambi i profili IKEv2).
Questa è una topologia generica utilizzata per tutti gli esempi riportati nel presente documento.
Nell'esempio di IKEv1, ogni router dispone di due trust point per ogni Autorità di certificazione (CA) e vengono registrati i certificati per ogni trust point.
Quando R1 è l'iniziatore ISAKMP, il tunnel negozia correttamente e il traffico è protetto. Si tratta di un comportamento normale. Quando R2 è l'iniziatore ISAKMP, la negoziazione Phase1 non riesce.
In questa sezione vengono descritte le variazioni di configurazione IKEv1 e IKEv2 utilizzate per il processo di scambio dei pacchetti e i possibili problemi.
Ecco la configurazione della rete R1 e della VPN per IKEv1 con più certificati:
crypto isakmp policy 10
encr 3des
hash md5
group 2
crypto isakmp profile prof1
self-identity fqdn
ca trust-point IOSCA1
match identity host R2.cisco.com
!
crypto ipsec transform-set TS esp-aes esp-sha256-hmac
mode tunnel
!
crypto ipsec profile prof1
set transform-set TS
set isakmp-profile prof1
!
interface Loopback0
description Simulate LAN
ip address 192.168.100.1 255.255.255.0
!
interface Tunnel1
ip address 10.0.0.1 255.255.255.0
tunnel source Ethernet0/0
tunnel destination 192.168.0.2
tunnel protection ipsec profile prof1
!
interface Ethernet0/0
ip address 192.168.0.1 255.255.255.0
ip route 192.168.200.0 255.255.255.0 10.0.0.2
Ecco la configurazione della rete R2 e della VPN per IKEv1 con più certificati:
crypto isakmp policy 10
encr 3des
hash md5
group 2
crypto isakmp profile prof1
self-identity fqdn
match identity host R1.cisco.com
!
crypto ipsec transform-set TS esp-aes esp-sha256-hmac
mode tunnel
!
crypto ipsec profile prof1
set transform-set TS
set isakmp-profile prof1
!
interface Loopback0
ip address 192.168.200.1 255.255.255.0
!
interface Tunnel1
ip address 10.0.0.2 255.255.255.0
tunnel source Ethernet0/0
tunnel destination 192.168.0.1
tunnel protection ipsec profile prof1
!
interface Ethernet0/0
ip address 192.168.0.2 255.255.255.0
ip route 192.168.100.0 255.255.255.0 10.0.0.1
In questo esempio, R1 ha due trust-point: uno usa IOSCA1 e l'altro usa IOSCA2:
crypto pki trustpoint IOSCA1
enrollment url http://192.168.0.3:80
serial-number
fqdn R1.cisco.com
ip-address 192.168.0.1
subject-name CN=R1,OU=IT,O=cisco,O=com
revocation-check crl
!
crypto pki trustpoint IOSCA2
enrollment url http://192.168.0.4:80
serial-number
fqdn R1.cisco.com
ip-address 192.168.0.1
subject-name CN=R1,OU=IT,O=cisco,O=com
revocation-check crl
In questo esempio, R2 include anche due trust point: uno usa IOSCA1 e l'altro usa IOSCA2:
crypto pki trustpoint IOSCA1
enrollment url http://192.168.0.3:80
serial-number
fqdn R2.cisco.com
ip-address 192.168.0.2
subject-name CN=R2,OU=IT,O=cisco,O=com
revocation-check crl
!
crypto pki trustpoint IOSCA2
enrollment url http://192.168.0.4:80
serial-number
fqdn R2.cisco.com
ip-address 192.168.0.2
subject-name CN=R2,OU=IT,O=cisco,O=com
revocation-check crl
È importante notare l'unica differenza in queste configurazioni: il profilo ISAKMP R1 utilizza il comando ca trust-point per il trust-point IOSCA1, che indica che R1 considera attendibili solo i certificati convalidati da quel trust-point specifico. R2, invece, considera attendibili tutti i certificati convalidati da tutti i trust point definiti a livello globale.
Di seguito sono riportati i comandi di debug per R1 e R2:
In questo caso, R1 avvia il tunnel e invia il certificato che richiede l'MM3:
*Jun 20 13:00:37.609: ISAKMP:(0): SA request profile is prof1
*Jun 20 13:00:37.610: ISAKMP (0): constructing CERT_REQ for issuer
cn=CA1,o=cisco,o=com
*Jun 20 13:00:37.610: ISAKMP:(0): sending packet to 192.168.0.2
my_port 500 peer_port 500 (I) MM_SA_SETUP
*Jun 20 13:00:37.610: ISAKMP:(0):Old State = IKE_I_MM2 New State = IKE_I_MM3
È importante notare che il pacchetto contiene una sola richiesta di certificato, che è solo per il trust point IOSCA1. Questo comportamento è previsto con la configurazione corrente del profilo ISAKMP (CN=CA1, O=cisco, O=com). Non vengono inviate altre richieste di certificati, che è possibile verificare con la funzionalità Embedded Packet Capture:
Quando R2 riceve il pacchetto, inizia a elaborare la richiesta di certificato, creando una corrispondenza che determina il trust-point e il certificato associato utilizzato per l'autenticazione in MM5. L'ordine di elaborazione è lo stesso del payload della richiesta di certificato nel pacchetto ISAKMP. Ciò significa che viene utilizzata la prima corrispondenza. In questo scenario esiste una sola corrispondenza poiché R1 è configurato con un trust point specifico e invia una sola richiesta di certificato associata al trust point.
*Jun 20 13:00:37.617: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.617: ISAKMP:(1010): peer wants cert issued
by cn=CA1,o=cisco,o=com
*Jun 20 13:00:37.617: Choosing trustpoint IOSCA1 as issuer
In seguito R2 prepara M4. Si tratta del pacchetto che contiene la richiesta di certificato per tutti i trust point trusted. Poiché R2 è il risponditore ISAKMP, tutti i trust point definiti a livello globale sono attendibili (la configurazione dei trust point CA non viene controllata). Due dei trust point sono definiti manualmente (IOSCA1 e IOSCA2), mentre gli altri sono predefiniti.
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer cn=CA1,o=cisco,o=com
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer cn=CA2,o=cisco,o=com
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer ou=Class 3 Public Primary Certification Authority,
o=VeriSign, Inc.,c=US
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer cn=Cisco SSCA2,o=Cisco Systems
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer cn=Cisco Manufacturing CA,o=Cisco Systems
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer cn=Cisco Root CA 2048,o=Cisco Systems
*Jun 20 13:00:37.617: ISAKMP (1010): constructing CERT_REQ
for issuer cn=Cisco Root CA M1,o=Cisco
*Jun 20 13:00:37.617: ISAKMP:(1010): sending packet to
192.168.0.1 my_port 500 peer_port 500 (R) MM_KEY_EXCH
*Jun 20 13:00:37.617: ISAKMP:(1010):Sending an IKE IPv4 Packet.
*Jun 20 13:00:37.617: ISAKMP:(1010):Input = IKE_MESG_INTERNAL,
IKE_PROCESS_COMPLETE
*Jun 20 13:00:37.617: ISAKMP:(1010):Old State = IKE_R_MM3
New State = IKE_R_MM4
È possibile verificare il pacchetto con Wireshark. Il pacchetto M4 di R2 contiene sette voci di richiesta certificato:
R1 riceve quindi MM4 da R2 con più campi di richiesta certificato:
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by
cn=CA1,o=cisco,o=com
*Jun 20 13:00:37.623: ISAKMP: Examining profile list for trustpoint IOSCA1
*Jun 20 13:00:37.623: ISAKMP: Found matching profile for IOSCA1
*Jun 20 13:00:37.623: Choosing trustpoint IOSCA1 as issuer
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by
cn=CA2,o=cisco,o=com
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by ou=Class 3
Public Primary Certification Authority,o=VeriSign, Inc.,c=US
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by
cn=Cisco SSCA2,o=Cisco Systems
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by
cn=Cisco Manufacturing CA,o=Cisco Systems
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by
cn=Cisco Root CA 2048,o=Cisco Systems
*Jun 20 13:00:37.623: ISAKMP:(1010): processing CERT_REQ payload. message ID = 0
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants a CT_X509_SIGNATURE cert
*Jun 20 13:00:37.623: ISAKMP:(1010): peer wants cert issued by
cn=Cisco Root CA M1,o=Cisco
La prima regola di corrispondenza in R1 corrisponde alla prima richiesta di certificato con il trust point IOSCA1. Determina che R1 utilizza il certificato associato al trust point IOSCA1 per l'autenticazione in MM5. Come ID IKE viene utilizzato il nome di dominio completo (FQDN). Ciò è dovuto alla configurazione dell'FQDN dell'identità nel profilo ISAKMP:
*Jun 20 13:00:37.624: ISAKMP (1010): constructing CERT payload for serialNumber=
100+ipaddress=192.168.0.1+hostname=R1.cisco.com,cn=R1,ou=IT,o=cisco,o=com
*Jun 20 13:00:37.624: ISAKMP:(1010): using the IOSCA1 trustpoint's
keypair to sign
L'MM5 viene ricevuto ed elaborato da R2. L'ID IKE ricevuto (R1.cisco.com) corrisponde al profilo ISAKMP prof1. Il certificato ricevuto viene quindi convalidato e l'autenticazione ha esito positivo:
*Jun 20 13:00:37.625: ISAKMP:(1010): processing ID payload. message ID = 0
*Jun 20 13:00:37.625: ISAKMP (1010): ID payload
next-payload : 6
type : 2
FQDN name : R1.cisco.com
protocol : 17
port : 500
length : 20
*Jun 20 13:00:37.625: ISAKMP:(0):: peer matches prof1 profile
..........
*Jun 20 13:00:37.626: CRYPTO_PKI: (A0013) Certificate validation succeeded
..........
*Jun 20 13:00:37.626: ISAKMP:(1010):SA authentication status:
authenticated
R2 prepara quindi il modello M6 con il certificato associato a IOSCA1:
*Jun 20 13:00:37.627: ISAKMP (1010): constructing CERT payload for serialNumber=
101+ipaddress=192.168.0.2+hostname=R2.cisco.com,cn=R2,ou=IT,o=cisco,o=com
*Jun 20 13:00:37.627: ISAKMP:(1010): using the IOSCA1 trustpoint's keypair to sign
*Jun 20 13:00:37.632: ISAKMP:(1010): sending packet to 192.168.0.1
my_port 500 peer_port 500 (R) MM_KEY_EXCH
Il pacchetto viene ricevuto da R1, che verifica il certificato e l'autenticazione:
*Jun 20 13:00:37.632: ISAKMP (1010): received packet from 192.168.0.2
dport 500 sport 500 Global (I) MM_KEY_EXCH
*Jun 20 13:00:37.632: ISAKMP:(1010): processing ID payload. message ID = 0
*Jun 20 13:00:37.632: ISAKMP (1010): ID payload
next-payload : 6
type : 2
FQDN name : R2.cisco.com
protocol : 17
port : 500
length : 20
....
*Jun 20 13:00:37.632: ISAKMP:(0): Creating CERT validation list: IOSCA1
....
*Jun 20 13:00:37.633: CRYPTO_PKI: (80013) Certificate validation succeeded
....
*Jun 20 13:00:37.637: ISAKMP:(1010):SA authentication status:
authenticated
*Jun 20 13:00:37.637: ISAKMP:(1010):Old State = IKE_I_MM6
New State = IKE_P1_COMPLETE
La fase 1 è completata. La fase 2 è negoziata come di consueto. Il tunnel è stato stabilito correttamente e il traffico è protetto.
In questo esempio viene descritto il processo in cui R2 avvia lo stesso tunnel IKEv1 e viene spiegato perché non viene stabilito.
R2 invia il modulo M3 con sette payload di richieste di certificati perché R2 non ha un trust point associato al profilo ISAKMP (tutti i trust point sono attendibili):
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer cn=CA1,o=cisco,o=com
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer cn=CA2,o=cisco,o=com
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer ou=Class 3 Public Primary Certification Authority,
o=VeriSign, Inc.,c=US
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer cn=Cisco SSCA2,o=Cisco Systems
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer cn=Cisco Manufacturing CA,o=Cisco Systems
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer cn=Cisco Root CA 2048,o=Cisco Systems
*Jun 17 18:08:44.321: ISAKMP (0): constructing CERT_REQ for
issuer cn=Cisco Root CA M1,o=Cisco
*Jun 17 18:08:44.321: ISAKMP (0): sending packet to 192.168.0.1
my_port 500 peer_port 500 (I) MM_SA_SETUP
Quando R1 riceve il pacchetto da R2, elabora la richiesta di certificato e corrisponde al trust point IOSCA1, che determina il certificato inviato in MM6:
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
cn=CA1,o=cisco,o=com
*Jun 17 18:08:14.321: Choosing trustpoint IOSCA1 as issuer
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
cn=CA2,o=cisco,o=com
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
ou=Class 3 Public Primary Certification Authority,o=VeriSign, Inc.,c=US
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
cn=Cisco SSCA2,o=Cisco Systems
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
cn=Cisco Manufacturing CA,o=Cisco Systems
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
cn=Cisco Root CA 2048,o=Cisco Systems
*Jun 17 18:08:14.321: ISAKMP:(1099): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:14.321: ISAKMP:(1099): peer wants cert issued by
cn=Cisco Root CA M1,o=Cisco
Successivamente, R1 prepara il pacchetto M4 con il payload della richiesta di certificato. A questo punto sono disponibili più payload di richiesta di certificato:
*Jun 17 18:08:14.321: ISAKMP (1099): constructing CERT_REQ for issuer
cn=CA2,o=cisco,o=com
*Jun 17 18:08:14.321: ISAKMP (1099): constructing CERT_REQ for issuer
cn=CA1,o=cisco,o=com
*Jun 17 18:08:14.322: ISAKMP (1099): constructing CERT_REQ for issuer
ou=Class 3 Public Primary Certification Authority,
o=VeriSign, Inc.,c=US
*Jun 17 18:08:14.322: ISAKMP (1099): constructing CERT_REQ for issuer
cn=Cisco SSCA2,o=Cisco Systems
*Jun 17 18:08:14.322: ISAKMP (1099): constructing CERT_REQ for issuer
cn=Cisco Manufacturing CA,o=Cisco Systems
*Jun 17 18:08:14.322: ISAKMP (1099): constructing CERT_REQ for issuer
cn=Cisco Root CA 2048,o=Cisco Systems
*Jun 17 18:08:14.322: ISAKMP (1099): constructing CERT_REQ for issuer
cn=Cisco Root CA M1,o=Cisco
*Jun 17 18:08:14.322: ISAKMP:(1099): sending packet to 192.168.0.2
my_port 500 peer_port 500 (R) MM_KEY_EXCH
Verificare i registri con Embedded Packet Capture (EPC) e Wireshark:
Anche se R1 è configurato per un singolo trust point (IOSCA1) nel profilo ISAKMP, vengono inviate più richieste di certificati. Questo si verifica perché il payload della richiesta di certificato è determinato dal comando ca trust-point nel profilo ISAKMP, ma solo quando il router è l'iniziatore della sessione ISAKMP. Se il router è il risponditore, vi sono più payload di richieste di certificati per tutti i trust point definiti a livello globale perché R1 non conosce ancora il profilo ISAKMP utilizzato per la sessione IKE.
La sessione IKE in entrata è associata a un profilo ISAKMP specifico dopo la ricezione dell'MM5, che include l'ID IKE. Successivamente, il comando match identity per il profilo specifico associa la sessione IKE al profilo. Tuttavia, il router non può determinarlo fino a questo momento. Per ogni profilo possono essere configurati più profili ISAKMP con comandi ca trust-point diversi.
Per questo motivo, R1 deve inviare la richiesta di certificato per tutti i trust point configurati globalmente.
Fare riferimento alla guida di riferimento del comando ca trust-point:
Un router che avvia IKE e un router che risponde alla richiesta IKE devono avere configurazioni di trust point simmetriche. Ad esempio, un router rispondente (in modalità principale IKE) che esegue la crittografia e l'autenticazione della firma RSA potrebbe utilizzare i trust definiti nella configurazione globale durante l'invio dei payload CERT-REQ. Tuttavia, il router potrebbe utilizzare un elenco limitato di trust definiti nel profilo ISAKMP per la verifica del certificato. Se il peer (l'iniziatore IKE) è configurato per utilizzare un certificato il cui punto di attendibilità si trova nell'elenco globale del router rispondente ma non nel profilo ISAKMP del router rispondente, il certificato viene rifiutato. Tuttavia, se il router che avvia la procedura non è a conoscenza dei trust point nella configurazione globale del router che risponde, è comunque possibile autenticare il certificato.
Verificare ora i dettagli del pacchetto MM4 per individuare il primo payload della richiesta di certificato:
Il pacchetto MM4 inviato da R1 include il trust point IOSCA2 nel primo payload della richiesta di certificato a causa dell'ordine in cui sono installati i certificati; la prima è firmata dal trust point IOSCA2:
R1#sh crypto pki certificates
Certificate
Status: Available
Certificate Serial Number (hex): 03
Certificate Usage: General Purpose
Issuer:
cn=CA2
o=cisco
o=com
Subject:
Name: R1.cisco.com
IP Address: 192.168.0.1
Serial Number: 100
serialNumber=100+ipaddress=192.168.0.1+hostname=R1.cisco.com
cn=R1
ou=IT
o=cisco
o=com
Validity Date:
start date: 13:25:01 CET Jun 17 2013
end date: 13:25:01 CET Jun 17 2014
Associated Trustpoints: IOSCA2
...
<output omitted, 1 more R1 cert signed by CA1, 2 more CA certs>
Confrontare il pacchetto M3 inviato da R2 quando il trust point IOSCA1 è incluso nel primo payload della richiesta di certificato:
R2#sh crypto pki certificates
Certificate
Status: Available
Certificate Serial Number (hex): 02
Certificate Usage: General Purpose
Issuer:
cn=CA1
o=cisco
o=com
Subject:
Name: R2.cisco.com
IP Address: 192.168.0.2
Serial Number: 101
serialNumber=101+ipaddress=192.168.0.2+hostname=R2.cisco.com
cn=R2
ou=IT
o=cisco
o=com
Validity Date:
start date: 13:23:49 CET Jun 17 2013
end date: 13:23:49 CET Jun 17 2014
Associated Trustpoints: IOSCA1
Storage: nvram:CA1#2.cer
...
<output omitted, 1 more R2 cert signed by CA2, 2 more CA certs>
Ora R2 riceve il pacchetto MM4 da R1 e inizia a elaborare la richiesta di certificato. Il primo payload della richiesta di certificato corrisponde al trust point IOSCA2:
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
cn=CA2,o=cisco,o=com
*Jun 17 18:08:44.335: Choosing trustpoint IOSCA2 as issuer
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
cn=CA1,o=cisco,o=com
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
ou=Class 3 Public Primary Certification Authority,o=VeriSign, Inc.,c=US
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
cn=Cisco SSCA2,o=Cisco Systems
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
cn=Cisco Manufacturing CA,o=Cisco Systems
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
cn=Cisco Root CA 2048,o=Cisco Systems
*Jun 17 18:08:44.335: ISAKMP:(1100): processing CERT_REQ payload.
message ID = 0
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.335: ISAKMP:(1100): peer wants cert issued by
cn=Cisco Root CA M1,o=Cisco
Quando R2 prepara il pacchetto M5, utilizza il certificato associato al trust point IOSCA2:
*Jun 17 18:08:44.335: ISAKMP:(1100):SA is doing RSA signature authentication
using id type ID_FQDN
*Jun 17 18:08:44.335: ISAKMP (1100): ID payload
next-payload : 6
type : 2
FQDN name : R2.cisco.com
protocol : 17
port : 500
length : 20
*Jun 17 18:08:44.335: ISAKMP:(1100):Total payload length: 20
*Jun 17 18:08:44.335: ISAKMP:(1100): IKE->PKI Get CertificateChain to be sent
to peer state (I) MM_KEY_EXCH (peer 192.168.0.1)
*Jun 17 18:08:44.335: ISAKMP:(1100): PKI->IKE Got CertificateChain to be sent
to peer state (I) MM_KEY_EXCH (peer 192.168.0.1)
*Jun 17 18:08:44.336: ISAKMP (1100): constructing CERT payload for
serialNumber=101+ipaddress=192.168.0.2+hostname=R2.cisco.com,cn=R2,
ou=IT,o=cisco,o=com
R2#
*Jun 17 18:08:44.336: ISAKMP:(1100): using the IOSCA2 trustpoint's
keypair to sign
*Jun 17 18:08:44.336: ISAKMP:(1100): sending packet to 192.168.0.1
my_port 500 peer_port 500 (I) MM_KEY_EXCH
*Jun 17 18:08:44.336: ISAKMP:(1100):Sending an IKE IPv4 Packet.
Il pacchetto MM5 viene ricevuto da R1. Poiché R1 considera attendibile solo il trust point IOSCA1 (per il profilo ISAKMP prof1), la convalida del certificato ha esito negativo:
*Jun 17 18:08:44.337: ISAKMP (1100): received packet from 192.168.0.2
dport 500 sport 500 Global (R) MM_KEY_EXCH
*Jun 17 18:08:44.337: ISAKMP:(1100):Input = IKE_MESG_FROM_PEER, IKE_MM_EXCH
*Jun 17 18:08:44.337: ISAKMP:(1100):Old State =IKE_R_MM4 New State = IKE_R_MM5
*Jun 17 18:08:44.337: ISAKMP:(1100): processing ID payload. message ID = 0
*Jun 17 18:08:44.337: ISAKMP (1100): ID payload
next-payload : 6
type : 2
FQDN name : R2.cisco.com
protocol : 17
port : 500
length : 20
*Jun 17 18:08:44.337: ISAKMP:(0):: peer matches prof1 profile
*Jun 17 18:08:44.337: ISAKMP:(1100): processing CERT payload. message ID = 0
*Jun 17 18:08:44.337: ISAKMP:(1100): processing a CT_X509_SIGNATURE cert
*Jun 17 18:08:44.337: ISAKMP:(1100): IKE->PKI Add peer's certificate state
(R) MM_KEY_EXCH (peer 192.168.0.2)
*Jun 17 18:08:44.337: CRYPTO_PKI: (900C5) Adding peer certificate
*Jun 17 18:08:44.337: ISAKMP:(1100): PKI->IKE Added peer's certificate state
(R) MM_KEY_EXCH (peer 192.168.0.2)
*Jun 17 18:08:44.337: ISAKMP:(1100): IKE->PKI Get PeerCertificateChain state
(R) MM_KEY_EXCH (peer 192.168.0.2)
*Jun 17 18:08:44.337: ISAKMP:(1100): PKI->IKE Got PeerCertificateChain state
(R) MM_KEY_EXCH (peer 192.168.0.2)
*Jun 17 18:08:44.337: ISAKMP:(1100): peer's pubkey isn't cached
*Jun 17 18:08:44.337: ISAKMP:(1100):Profile has no keyring, aborting key search
*Jun 17 18:08:44.337: ISAKMP:(0): Creating CERT validation list: IOSCA1,
*Jun 17 18:08:44.337: ISAKMP:(1100): IKE->PKI Validate certificate chain state
(R) MM_KEY_EXCH (peer 192.168.0.2)
*Jun 17 18:08:44.337: CRYPTO_PKI:ip-ext-val:IP extension validation not required
*Jun 17 18:08:44.341: CRYPTO_PKI: (900C5) Check for identical certs
*Jun 17 18:08:44.341: CRYPTO_PKI: (900C5) Create a list of suitable trustpoints
*Jun 17 18:08:44.341: CRYPTO_PKI: (900C5) No suitable trustpoints found
*Jun 17 18:08:44.341: ISAKMP:(1100): PKI->IKE Validate certificate chain state
(R) MM_KEY_EXCH (peer 192.168.0.2)
*Jun 17 18:08:44.341: %CRYPTO-5-IKMP_INVAL_CERT: Certificate received from
192.168.0.2 is bad: unknown error returned in certificate validation
R1#
*Jun 17 18:08:44.341: ISAKMP:(1100): Unknown error in cert validation, -1
Questa configurazione funziona se l'ordine di registrazione del certificato in R1 è diverso in quanto il primo certificato visualizzato è firmato dal trust point IOSCA1. Inoltre, il primo payload della richiesta di certificato in MM4 è il trust point IOSCA1, che viene quindi scelto da R2 e convalidato correttamente su R1 in MM6.
Per gli scenari con più profili e trust point ma senza una configurazione di trust point specifica nei profili, non vi sono problemi perché non esiste una convalida di trust point specifici determinata da una configurazione del comando ca trust-point. Tuttavia, il processo di selezione potrebbe non essere ovvio. A seconda del router che funge da iniziatore, i diversi certificati vengono selezionati per il processo di autenticazione in relazione all'ordine di registrazione del certificato.
A volte un certificato può essere supportato solo da un lato della connessione, come in x509 versione 1, che non è una tipica funzione hash utilizzata per firmare. Il tunnel VPN potrebbe essere stabilito solo da un lato della connessione.
Di seguito viene riportato un elemento di cattura relativo alla RFC4945:
3.2.7.1. Specifica delle autorità di certificazione
Quando si richiede lo scambio in banda del materiale per le chiavi, le implementazioni DEVONO generare CERTREQ per ogni peer trust anchor che il criterio locale considera esplicitamente attendibile durante un determinato scambio.
RFC non è chiaro. Il criterio locale potrebbe essere correlato in modo esplicito al comando ca trust-point configurato nel profilo ISAKMP di crittografia. Il problema è che nella fase MM3 e MM4 del processo, non è possibile selezionare un profilo ISAKMP a meno che non si utilizzi un indirizzo IP per l'identità e i trust-point, perché l'autenticazione nella fase MM5 e MM6 del processo deve avvenire prima. Per questo motivo, i criteri locali fanno riferimento esplicitamente a tutti i trust point configurati nel dispositivo.
Prima di descrivere più certificati per IKEv2, è importante conoscere il modo in cui i profili vengono selezionati quando viene utilizzata l'identità di corrispondenza, che è soddisfatta per tutti i profili. Si tratta di uno scenario non consigliato perché i risultati della negoziazione IKEv2 dipendono da più fattori. Gli stessi problemi si verificano per IKEv1 quando si utilizzano profili che si sovrappongono.
Di seguito è riportato un esempio di configurazione dell'iniziatore IKEv2:
crypto ikev2 proposal prop-1
encryption 3des
integrity md5
group 2
!
crypto ikev2 policy pol-1
match fvrf any
proposal prop-1
!
crypto ikev2 profile profile1
match identity remote address 192.168.0.2 255.255.255.255
identity local address 192.168.0.1
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint TP1
crypto ipsec transform-set trans esp-3des esp-sha-hmac
mode tunnel
!
crypto ipsec profile profile1
set transform-set trans
set ikev2-profile profile1
!
interface Loopback0
ip address 192.168.100.1 255.255.255.255
!
interface Tunnel1
ip address 10.0.0.1 255.255.255.0
tunnel source Ethernet0/0
tunnel destination 192.168.0.2
tunnel protection ipsec profile profile1
!
interface Ethernet0/0
ip address 192.168.0.1 255.255.255.0
ip route 192.168.200.1 255.255.255.255 10.0.0.2
L'indirizzo del tipo di identità viene utilizzato per entrambi i lati della connessione. L'autenticazione tramite certificati (che può anche essere una chiave già condivisa) non è importante per questo esempio. Il risponditore dispone di più profili che corrispondono tutti al traffico IKEv2 in entrata:
crypto ikev2 proposal prop-1
encryption 3des
integrity md5
group 2
!
crypto ikev2 policy pol-1
match fvrf any
proposal prop-1
!
crypto ikev2 profile profile1
match identity remote address 192.168.0.1 255.255.255.255
identity local address 192.168.0.2
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint TP1
!
crypto ikev2 profile profile2
match identity remote address 192.168.0.1 255.255.255.255
identity local address 192.168.0.2
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint TP1
!
crypto ikev2 profile profile3
match identity remote address 192.168.0.1 255.255.255.255
identity local address 192.168.0.2
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint TP1
crypto ipsec transform-set trans esp-3des esp-sha-hmac
mode tunnel
!
crypto ipsec profile profile1
set transform-set trans
set ikev2-profile profile1
!
interface Loopback0
ip address 192.168.200.1 255.255.255.255
!
interface Tunnel1
ip address 10.0.0.2 255.255.255.0
tunnel source Ethernet0/0
tunnel destination 192.168.0.1
tunnel protection ipsec profile profile1
!
interface Ethernet0/0
ip address 192.168.0.2 255.255.255.0
ip route 192.168.100.1 255.255.255.255 10.0.0.1
L'iniziatore invia il terzo pacchetto IKEv2 e il risponditore deve scegliere il profilo in base all'identità ricevuta. L'identità è un indirizzo IPv4 (192.168.0.1):
IKEv2:(SA ID = 1):Searching policy based on peer's identity '192.168.0.1' of
type 'IPv4 address'
Tutti i profili soddisfano questa identità a causa del comando match identity configurato. Il sistema operativo IOS sceglie l'ultimo nella configurazione, ovvero profile3 nell'esempio seguente:
IKEv2:found matching IKEv2 profile 'profile3'
Per verificare l'ordine, immettere il comando show crypto ikev2 profile.
In questo scenario, il responder seleziona profile3, ma per l'interfaccia del tunnel viene utilizzato profile1. In questo modo viene visualizzato un errore quando l'ID proxy viene negoziato:
*Jul 17 09:23:48.187: map_db_check_isakmp_profile profile did not match
*Jul 17 09:23:48.187: map_db_find_best did not find matching map
*Jul 17 09:23:48.187: IPSEC(ipsec_process_proposal):
proxy identities not supported
*Jul 17 09:23:48.187: IKEv2:(SA ID = 1):There was no
IPSEC policy found for received TS
*Jul 17 09:23:48.187: IKEv2:(SA ID = 1):
*Jul 17 09:23:48.187: IKEv2:(SA ID = 1):Sending TS unacceptable notify
Quando per l'autenticazione vengono utilizzati certificati per IKEv2, l'iniziatore non invia il payload della richiesta di certificato nel primo pacchetto:
IKEv2 IKE_SA_INIT Exchange REQUEST
Payload contents:
SA KE N VID VID NOTIFY(NAT_DETECTION_SOURCE_IP)
NOTIFY(NAT_DETECTION_DESTINATION_IP)
Il risponditore risponde con il payload della richiesta di certificato (secondo pacchetto) e tutte le CA perché non è a conoscenza del profilo da utilizzare in questa fase. Il pacchetto contenente le informazioni viene inviato all'iniziatore:
IKEv2 IKE_SA_INIT Exchange RESPONSE
Payload contents:
SA KE N VID VID NOTIFY(NAT_DETECTION_SOURCE_IP) NOTIFY
(NAT_DETECTION_DESTINATION_IP) CERTREQ NOTIFY(HTTP_CERT_LOOKUP_SUPPORTED)
L'iniziatore elabora il pacchetto e sceglie un trust point corrispondente alla CA proposta:
IKEv2:(SA ID = 1):[IKEv2 -> PKI] Retrieving trustpoint(s) from
received certificate hash(es)
IKEv2:(SA ID = 1):[PKI -> IKEv2] Retrieved trustpoint(s): 'TP1'
L'iniziatore invia quindi il terzo pacchetto con la richiesta di certificato e il payload del certificato. Questo pacchetto è già crittografato con il materiale per le chiavi della fase Diffie-Hellman (DH):
IKEv2:(SA ID = 1):Building packet for encryption.
Payload contents:
VID IDi CERT CERTREQ NOTIFY(HTTP_CERT_LOOKUP_SUPPORTED) AUTH CFG SA TSi
TSr NOTIFY(INITIAL_CONTACT) NOTIFY(SET_WINDOW_SIZE) NOTIFY(ESP_TFC_NO_SUPPORT)
NOTIFY(NON_FIRST_FRAGS)
Il quarto pacchetto viene inviato dal risponditore all'iniziatore e contiene solo il payload del certificato:
IKEv2 IKE_AUTH Exchange RESPONSE
Payload contents:
VID IDr CERT AUTH SA TSi TSr NOTIFY(SET_WINDOW_SIZE) NOTIFY(ESP_TFC_NO_SUPPORT)
NOTIFY(NON_FIRST_FRAGS)
Il flusso descritto di seguito è simile al flusso IKEv1. Il risponditore deve inviare il payload della richiesta di certificato in anticipo senza conoscere il profilo da utilizzare, creando gli stessi problemi descritti in precedenza per IKEv1 (dal punto di vista del protocollo). Tuttavia, l'implementazione sul sistema operativo IKEv2 è migliore rispetto a IKEv1.
Di seguito è riportato un esempio di quando un iniziatore IKEv2 tenta di utilizzare un profilo con l'autenticazione del certificato e non dispone di un trust point configurato in tale profilo:
crypto ikev2 profile profile1
match identity remote address 192.168.0.2 255.255.255.255
identity local address 192.168.0.1
authentication remote rsa-sig
authentication local rsa-sig
Il primo pacchetto viene inviato senza alcun payload della richiesta di certificato, come descritto in precedenza. La risposta del risponditore include il payload della richiesta di certificato per tutti i trust point definiti nella modalità di configurazione globale. L'iniziatore riceve il messaggio:
*Jul 17 17:40:43.183: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Retrieving trustpoint(s)
from received certificate hash(es)
*Jul 17 17:40:43.183: IKEv2:(SA ID = 1):[PKI -> IKEv2] Retrieved
trustpoint(s): 'TP1'
*Jul 17 17:40:43.183: CRYPTO_PKI: crypto_pki_get_cert_record_by_subject()
*Jul 17 17:40:43.183: CRYPTO_PKI: Found a subject match
*Jul 17 17:40:43.183: CRYPTO_PKI: crypto_pki_get_cert_record_by_subject()
*Jul 17 17:40:43.183: CRYPTO_PKI: Found a subject match
*Jul 17 17:40:43.183: CRYPTO_PKI: Trust-Point TP1 picked up
*Jul 17 17:40:43.183: CRYPTO_PKI: 1 matching trustpoints found
*Jul 17 17:40:43.183: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Retrieving trustpoint(s)
from received certificate hash(es)
*Jul 17 17:40:43.183: IKEv2:(SA ID = 1):[PKI -> IKEv2] Retrieved
trustpoint(s): 'TP2'
*Jul 17 17:40:43.183: CRYPTO_PKI: Trust-Point TP2 picked up
*Jul 17 17:40:43.183: CRYPTO_PKI: crypto_pki_get_cert_record_by_subject()
*Jul 17 17:40:43.183: CRYPTO_PKI: Found a subject match
*Jul 17 17:40:43.183: CRYPTO_PKI: crypto_pki_get_cert_record_by_subject()
*Jul 17 17:40:43.183: CRYPTO_PKI: Found a subject match
*Jul 17 17:40:43.183: CRYPTO_PKI: 1 matching trustpoints found
*Jul 17 17:40:43.183: IKEv2:(SA ID = 1):Failed to build certificate payload
L'iniziatore non conosce il trust point da utilizzare per firmare. Questa è la differenza principale quando si confronta l'implementazione IKEv2 con IKEv1. L'iniziatore IKEv2 deve avere il trust point configurato nel profilo dell'iniziatore IKEv2, ma non è necessario per il risponditore IKEv2.
Di seguito viene riportato un estratto della guida di riferimento del comando:
Se nella configurazione del profilo IKEv2 non è definito alcun trust point, per impostazione predefinita il certificato viene convalidato utilizzando tutti i trust point definiti nella configurazione globale
È possibile definire diversi trust point; uno per firmare e uno diverso per convalidare. Il trust point obbligatorio configurato nel profilo IKEv2 non risolve tutti i problemi.
Nell'esempio, R2 è l'iniziatore IKEv2:
crypto ikev2 profile profile1
match identity remote address 192.168.0.1 255.255.255.255
identity local address 192.168.0.2
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint TP1
pki trustpoint TP2
Nell'esempio, R1 è il responder IKEv2:
crypto ikev2 profile profile1
match identity remote address 192.168.0.2 255.255.255.255
identity local address 192.168.0.1
authentication remote rsa-sig
authentication local rsa-sig
pki trustpoint TP1
In questo caso, R2 invia il primo pacchetto senza alcuna richiesta di certificato. Il risponditore risponde con una richiesta di certificato per tutti i trust point configurati. L'ordine dei payload è simile a quello di IKEv1 e dipende dai certificati installati:
R1#show crypto pki certificates
Certificate
Status: Available
Certificate Serial Number (hex): 04
Certificate Usage: General Purpose
Issuer:
cn=CA2
....
Associated Trustpoints: TP2
Il primo certificato configurato in R1 è associato al trust point TP2, quindi il primo payload della richiesta di certificato è per la CA associata al trust point TP2. Pertanto, R2 la seleziona per l'autenticazione (prima regola di corrispondenza):
R2#
*Jul 17 18:09:04.542: IKEv2:(SA ID = 1):Processing IKE_SA_INIT message
*Jul 17 18:09:04.542: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Retrieving trustpoint(s)
from received certificate hash(es)
*Jul 17 18:09:04.542: IKEv2:(SA ID = 1):[PKI -> IKEv2] Retrieved
trustpoint(s): 'TP2'
*Jul 17 18:09:04.542: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Getting cert chain for
the trustpoint TP2
*Jul 17 18:09:04.542: IKEv2:(SA ID = 1):[PKI -> IKEv2] Getting of cert chain
for the trustpoint PASSED
R2 prepara quindi una risposta (pacchetto 3) con il payload della richiesta di certificazione associato a TP2. R1 non può considerare attendibile il certificato perché è configurato per la convalida rispetto al trust point TP1:
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Retrieving trustpoint(s)
from received certificate hash(es)
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):[PKI -> IKEv2] Retrieved
trustpoint(s): 'TP1'
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Getting cert chain for
the trustpoint TP1
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):[PKI -> IKEv2] Getting of cert chain
for the trustpoint PASSED
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):Get peer's authentication method
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):Peer's authentication method is 'RSA'
*Jul 17 18:09:04.550: IKEv2:(SA ID = 1):[IKEv2 -> PKI] Validating
certificate chain
*Jul 17 18:09:04.554: IKEv2:(SA ID = 1):[PKI -> IKEv2] Validation of certificate
chain FAILED
*Jul 17 18:09:04.554: IKEv2:(SA ID = 1):Verification of peer's authentication
data FAILED
*Jul 17 18:09:04.554: IKEv2:(SA ID = 1):Sending authentication failure notify
*Jul 17 18:09:04.554: IKEv2:(SA ID = 1):Building packet for encryption.
Payload contents:
NOTIFY(AUTHENTICATION_FAILED)
Come accennato in precedenza, Cisco consiglia di non utilizzare più trust point in un unico profilo IKEv2. Quando si utilizzano più trust point, è necessario assicurarsi che entrambi i lati considerino attendibili esattamente gli stessi trust point. Ad esempio, sia R1 che R2 hanno entrambi TP1 e TP2 configurati nei loro profili.
In questa sezione viene fornito un breve riepilogo delle informazioni descritte nel documento.
Il contenuto del payload della richiesta di certificato dipende dalla configurazione. Se per il profilo ISAKMP è configurato un trust point specifico e il router è l'iniziatore ISAKMP, la richiesta di certificato in MM3 conterrà solo la CA associata al trust point. Tuttavia, se lo stesso router è il risponditore ISAKMP, il pacchetto M4 inviato dal router include più payload di richiesta certificato per tutti i trust point definiti a livello globale (quando il comando ca trust-point non viene preso in considerazione). Questo si verifica perché il risponditore ISAKMP può determinare il profilo ISAKMP da utilizzare solo dopo aver ricevuto la richiesta MM5 e la richiesta di certificato inclusa in MM4.
Il payload della richiesta di certificato in MM3 e MM4 è importante a causa della prima regola di corrispondenza. La prima regola di corrispondenza determina il trust-point utilizzato per la selezione del certificato, necessario per l'autenticazione in MM5 e MM6.
L'ordine del payload della richiesta di certificato dipende dall'ordine dei certificati installati. L'autorità di certificazione del primo certificato visualizzato nell'output del comando show crypto pki certificate viene inviata per prima. Il primo certificato è l'ultimo registrato.
È possibile configurare più trust point per un profilo ISAKMP. Se si esegue questa operazione, verranno comunque applicate tutte le regole precedenti.
Tutti i problemi e gli avvertimenti descritti in questo documento sono dovuti alla progettazione del protocollo IKEv1. La fase di autenticazione avviene nella MM5 e nella MM6, mentre le proposte per l'autenticazione (richieste di certificati) devono essere inviate in una fase precedente (in anticipo) senza conoscere il profilo ISAKMP da utilizzare. Questo non è un problema specifico di Cisco e si riferisce alle limitazioni della progettazione del protocollo IKEv1.
Il protocollo IKEv2 è simile a IKEv1 per quanto riguarda il processo di negoziazione dei certificati. Tuttavia, l'implementazione nel sistema operativo IOS impone l'uso di trust point specifici per l'iniziatore. Questo non risolve tutti i problemi. Quando per un singolo profilo sono configurati più trust point e dall'altro lato è configurato un singolo trust point, è possibile che si verifichino problemi di autenticazione. Cisco consiglia di utilizzare configurazioni di trust point simmetriche per entrambi i lati della connessione (gli stessi trust point configurati per entrambi i profili IKEv2).
Di seguito sono riportate alcune note importanti sulle informazioni descritte nel presente documento:
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
23-Apr-2014 |
Versione iniziale |