簡介
本文檔介紹在Windows 10/11上使用內建客戶端設定FlexVPN的配置步驟。
必要條件
需求
思科建議您瞭解以下主題:
- Windows內建VPN客戶端
- CIsco IOS® XE FlexVPN配置
- OpenSSL基本組態
採用元件
本配置指南基於以下硬體和軟體版本:
- Windows 10和Windows 11
- Cisco IOS XE 16.12.4
- OpenSSL憑證授權單位(CA)v1.1.0g
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
設定
CA前提條件
CA必須允許您在證書中嵌入所需的擴展金鑰使用(EKU)。例如,在IKEv2伺服器上, Server Auth EKU
是必需的,而客戶端證書需要 Client Auth EKU
. 本地部署可使用:
- Cisco IOS CA伺服器 — 由於Cisco錯誤ID CSCuc82575,無法使用自簽名憑證。
- OpenSSL CA伺服器 —
openssl.cnf
必須具有extendedKeyUsage = serverAuth, clientAuth,此檔案通常位於路徑中 /etc/ssl/
.
- Microsoft CA伺服器 — 通常,這是首選選項,因為它可以配置為完全按照所需對證書進行簽名。
網路圖表
拓撲實驗
組態
配置CA
路由器作為CA
如果您使用Cisco IOS CA伺服器,請確保使用分配了EKU的最新Cisco IOS軟體版本。
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
作為CA的OpenSSL
OpenSSL CA是根據openssl.cnf檔案。OpenSSL伺服器的「config」檔案必須具有:
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
配置路由器IOS XE/IOS
如果OpenSSL則匯入pkcs12證書
對於Cisco IOS,證書的EKU欄位必須設定為「伺服器身份驗證」,對於客戶端必須設定為「客戶端身份驗證」。通常,相同的CA用於對客戶端和伺服器證書進行簽名。在這種情況下,伺服器憑證和使用者端憑證上分別會看到「伺服器驗證」和「使用者端驗證」,這是可接受的。
如果CA在IKEv2伺服器上以公鑰加密標準(PKCS)#12格式向使用者端和伺服器頒發憑證,且憑證撤銷清單(CRL)無法存取或可用,則必須設定:
crypto pki trustpoint FlexRootCA
revocation-check none
輸入以下命令以匯入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.
您還可以在OpenSSL中將pkcs12轉換為base64,並在終端中匯入證書:
openssl base64 -in ikev2.p12 -out ikev2.pem
cat ikev2.pem —>複製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
將路由器作為CA伺服器請求證書
如果Cisco IOS CA伺服器自動授予證書,則必須使用CA伺服器URL配置IKEv2伺服器以接收證書,如以下示例所示:
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
配置信任點時,您需要:
- 使用以下命令驗證CA:
crypto pki authenticate FlexRootCA
- 使用以下命令使用CA註冊IKEv2伺服器:
crypto pki enroll FlexRootCA
使用證書身份驗證配置FlexVPN IKEv2
以下是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
虛擬模板的IP未編號必須是除IPsec連線使用的本地地址以外的任何內容。(如果您使用硬體客戶端,您將通過IKEv2配置節點交換路由資訊,並在硬體客戶端上建立遞迴路由問題)。
註:IOS XE版本17.06.01a思科錯誤ID CSCwa76260 和Cisco錯誤ID CSCwa80474會干擾Windows內建客戶端的正確功能,因為它們使用group2作為預設dh組。升級到固定版本後,系統會通知您將來會刪除不推薦使用的密碼,但這些密碼仍然可以正常工作。Additional Information:
配置IKEv2 Windows內建客戶端
Windows 10內建客戶端
1.導航至 Settings > Network & Internet > VPN
,然後按一下或選擇 Add a VPN Connection
如下圖所示:
Windows VPN設定
2.將VPN提供商配置為Windows(內建)、連線名稱、伺服器名稱或地址、VPN型別和登入資訊型別(身份驗證),然後按一下 Save
如下圖所示。
Windows新增VPN設定
3.按一下「更改介面卡選項」,然後按一下右鍵或選擇名為 FlexVPN-IOS
.導航至 Properties > Security
並選取 Use machine certificates
如下圖所示:
Windows介面卡選項
將證書匯入到電腦證書儲存後,FlexVPN-IOS配置檔案現在即可連線。
Windows 11內建客戶端
1.導航至 Settings > Network & internet > VPN
,然後按一下或選擇Add VPN:
Windows 11 VPN設定
2.將VPN提供商配置為Windows(內建)、連線名稱、伺服器名稱或地址、VPN型別和登入資訊型別(身份驗證),然後儲存:
Windows 11 VPN連線設定
3.按一下 Network & Internet
再次按一下「Advanced network settings(高級網路設定)」 ,然後按一下或選擇 More network adapter options
如下圖所示:
介面卡選項的Windows 11路徑
按一下右鍵或選擇名為FlexVPN-IOS的介面卡,然後導航到屬性,導航到 Security
並選擇Use machine certificates:
Windows 11介面卡選項
在將證書匯入到電腦證書儲存後,FlexVPN-IOS配置檔案現在即可連線。
獲取客戶端證書
使用者端憑證需要以下因素:
- 客戶端證書的EKU為「客戶端身份驗證」。此外,CA還會提供PKCS#12證書:客戶端PKCS12證書必須進入本地電腦個人證書儲存
Windows PKCS12證書安裝
1.開啟pfx或p12證書:
按一下或選擇Store Location Local Machine:
證書匯入嚮導步驟1
2.指定p12或pfx的路徑,如下圖所示。
證書匯入嚮導步驟2
3.鍵入私鑰的密碼,如下圖所示:
證書匯入嚮導步驟3
4.按一下或選擇 Place all certificates in
個人商店:
證書匯入嚮導步驟4
pkcs12通常包括完整鏈結、CA和中間憑證。如果是這種情況,您必須確保CA已安裝在受信任的根證書頒發機構儲存上。
Windows CA證書安裝
如果CA不在Trusted Root Certificate Authorities Store中,請使用以下步驟進行安裝:
1.開啟CA pem或crt檔案,然後按一下或選擇「安裝證書」,如下圖所示。
CA證書
如果CA不在受信任的根證書頒發機構儲存上,您將看到以下消息:「此CA根證書不受信任....」
2.按一下或選擇「儲存位置本地電腦」:
CA證書匯入嚮導步驟1
3.按一下或選擇 Place all certificates in the following store
和 Trusted Root Certification Authorities
商店:
CA證書匯入嚮導步驟2
4.完成證書匯入嚮導:
CA證書匯入嚮導步驟3
證書安裝始終可以通過 Windows Key+R
和開啟 mmc.exe
或 certlm.msc
.
重要詳細資訊
- 如果以下兩個語句都適用,則必須將「IPSec IKE中繼」(OID = 1.3.6.1.5.5.8.2.2)用作EKU:
- IKEv2伺服器是Windows 2008伺服器。
- 有多個伺服器身份驗證證書用於IKEv2連線。如果為true,則將「伺服器身份驗證」EKU和「IPSec IKE中繼」EKU都放在一個證書上,或者在證書中分發這些EKU。請確保至少一個證書包含「IPSec IKE Intermediate」EKU。
有關詳細資訊,請參閱IKEv2 VPN連線故障排除。
- 在FlexVPN部署中,不要在EKU中使用「IPSec IKE Intermediate」。如果這樣做,IKEv2客戶端不會獲取IKEv2伺服器證書。因此,它們無法從IKE_SA_INIT響應消息中的IOS響應CERTREQ,因此無法使用13806 Error ID進行連線。
- 雖然不需要使用者替代名稱(SAN),但如果憑證有此名稱,則可接受。
- 在Windows 10/11客戶端證書儲存區上,確保機器信任的根證書頒發機構儲存區具有儘可能最小的證書數。如果超過50個,Cisco IOS可能無法讀取整個Cert_Req負載,該負載包含Windows 10/11框中所有已知CA的證書可分辨名稱(DN)。因此,協商失敗,您會看到客戶端上的連線超時。
驗證
使用本節內容,確認您的組態是否正常運作。
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:
疑難排解
您可以使用以下調試排除FlexVPN連線和證書協商故障:
debug crypto condition peer <remove client public ip>
debug crypto ikev2
debug cry pki messages
debug cry pki transactions
在Windows客戶端中,您可以檢查Windows日誌下的事件檢視器並檢查應用程式,VPN連線事件使用源RasClient。例如;
RasClient的Windows事件檢視器日誌