소개
이 문서에서는 Windows 10/11에서 내장형 클라이언트를 사용하여 FlexVPN을 설정하는 구성 단계에 대해 설명합니다.
사전 요구 사항
요구 사항
Cisco에서는 다음과 같은 주제에 대해 숙지할 것을 권장합니다.
- Windows 내장형 VPN 클라이언트
- Cisco IOS® XE FlexVPN 컨피그레이션
- OpenSSL 기본 컨피그레이션
사용되는 구성 요소
컨피그레이션 가이드는 다음 하드웨어 및 소프트웨어 버전을 기반으로 합니다.
- Windows 10 및 Windows 11
- Cisco IOS XE 16.12.4
- OpenSSL CA(Certificate Authority) v1.1.0g
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
구성
CA 사전 요구 사항
CA는 필요한 EKU(Extended Key Usage)를 인증서에 포함할 수 있도록 허용해야 합니다. 예를 들어, 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 Software 릴리스를 사용해야 합니다.
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을 CA로
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(Public-Key Cryptography Standards) #12 형식의 인증서를 클라이언트 및 서버에 발급하는 경우, CRL(Certificate Revocation List)에 연결할 수 없거나 사용할 수 없는 경우 다음과 같이 구성해야 합니다.
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 Cisco 버그 ID CSCwa76260 및 Cisco 버그 ID CSCwa80474는 group2를 기본 dh 그룹으로 사용하므로 Windows 내장 클라이언트의 적절한 기능을 방해합니다. 고정 릴리스로 업그레이드하면 향후 더 이상 사용되지 않는 암호를 제거할 수 있다는 알림이 표시되지만 여전히 작동할 수 있습니다. 추가 정보:
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(VPN 추가)을 선택합니다.
Windows 11 VPN 설정
2. VPN 공급자를 Windows(기본 제공), 연결 이름, 서버 이름 또는 주소, VPN 유형 및 로그인 정보 유형(인증)으로 구성한 다음 저장합니다.
Windows 11 VPN 연결 설정
3. 클릭 Network & Internet
고급 네트워크 설정을 클릭하고 을 클릭하거나 선택합니다 More network adapter options
그림과 같이
어댑터 옵션에 대한 Windows 11 경로
FlexVPN-IOS라는 어댑터를 마우스 오른쪽 버튼으로 클릭하거나 선택하고 Properties(속성)로 이동하여 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가 신뢰할 수 있는 루트 인증 기관 저장소에 없는 경우 다음 단계를 사용하여 설치합니다.
1. 이미지에 표시된 대로 CA pem 또는 crt 파일을 열고 Install Certificate(인증서 설치)를 클릭하거나 선택합니다.
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 오류 ID로 연결하지 못합니다.
- SAN(주체 대체 이름)은 필요하지 않지만 인증서에 SAN이 있는 경우 허용됩니다.
- Windows 10/11 클라이언트 인증서 저장소에서 시스템 신뢰할 수 있는 루트 인증 기관 저장소에 가능한 인증서 수가 가장 적은지 확인합니다. 50개가 넘는 경우 Cisco IOS에서 Windows 10/11 상자의 모든 알려진 CA의 DN(Certificate Distinguished Name)이 포함된 전체 Cert_Req 페이로드를 읽지 못할 수 있습니다. 그 결과, 협상이 실패하고 클라이언트에 연결 시간 초과가 표시됩니다.
다음을 확인합니다.
구성이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
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 이벤트 뷰어 로그