목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

네트워크 다이어그램

배경 정보

설정

C1000의 컨피그레이션

Windows PC의 구성

1단계. 사용자 인증 구성

2단계. 클라이언트 인증서 확인

Windows Server의 구성

1단계. 사용자 추가

2단계. OCSP 서비스 확인

ISE의 컨피그레이션

1단계. 장치 추가

2단계. Active Directory 추가

3단계. 인증서 인증 프로파일 추가

4단계. ID 소스 시퀀스 추가

5단계. ISE의 인증서 확인

6단계. 허용되는 프로토콜 추가

7단계. 정책 집합 추가

8단계. 인증 정책 추가

9단계. 권한 부여 정책 추가

다음을 확인합니다.

1단계. 인증 세션 확인

2단계. Radius 라이브 로그 확인

문제 해결

1. 디버그 로그

2. TCP 덤프

관련 정보

소개

이 문서에서는 실시간 클라이언트 인증서 해지 확인을 위해 OCSP를 사용하여 EAP-TLS 인증을 설정하는 데 필요한 단계를 설명합니다.

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- Cisco Identity Services Engine 구성

- Cisco Catalyst 구성

- 온라인 인증서 상태 프로토콜

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- Identity Services Engine Virtual 3.2 패치 6

- C1000-48FP-4G-L 15.2(7)E9

- Windows Server 2016

- Windows 10

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

네트워크 다이어그램

이 그림에서는 이 문서의 예에 사용된 토폴로지를 보여줍니다.

네트워크 다이어그램

배경 정보

EAP-TLS에서 클라이언트는 인증 프로세스의 일부로 서버에 디지털 인증서를 제공합니다. 이 문서에서는 ISE가 AD 서버에 대해 인증서 CN(Common Name)을 확인하고 실시간 프로토콜 상태를 제공하는 OCSP(Online Certificate Status Protocol)를 사용하여 인증서가 폐기되었는지 확인하여 클라이언트 인증서를 검증하는 방법에 대해 설명합니다.

Windows Server 2016에 구성된 도메인 이름은 ad.rem-xxx.com이며 이 문서의 예제로 사용됩니다.

이 문서에서 참조하는 OCSP(Online Certificate Status Protocol) 및 AD(Active Directory) 서버가 인증서 검증에 사용됩니다.

- Active Directory FQDN: winserver.ad.rem-xxx.com

- CRL 배포 URL: http://winserver.ad.rem-xxx.com/ocsp-ca.crl

- 권한 URL: http://winserver.ad.rem-xxx.com/ocsp

이는 문서에 사용된 각 인증서의 공통 이름을 가진 인증서 체인입니다.

- CA: ocsp-ca-common-name

- 클라이언트 인증서: clientcertCN

- 서버 인증서: ise32-01.ad.rem-xxx.com

- OCSP 서명 인증서: ocspSignCommonName

설정

C1000의 컨피그레이션

이는 C1000 CLI의 최소 컨피그레이션입니다.

aaa new-model

radius server ISE32

address ipv4 1.x.x.181

key cisco123

aaa group server radius AAASERVER

server name ISE32

aaa authentication dot1x default group AAASERVER

aaa authorization network default group AAASERVER

aaa accounting dot1x default start-stop group AAASERVER

dot1x system-auth-control

interface Vlan12

ip address 192.168.10.254 255.255.255.0

interface Vlan14

ip address 1.x.x.101 255.0.0.0

interface GigabitEthernet1/0/1

Switch port access vlan 14

Switch port mode access

interface GigabitEthernet1/0/3

switchport access vlan 12

switchport mode access

authentication host-mode multi-auth

authentication port-control auto

dot1x pae authenticator

spanning-tree portfast edge

Windows PC의 구성

1단계. 사용자 인증 구성

Authentication(인증)으로 이동하여 Enable IEEE 802.1X authentication(IEEE 802.1X 인증 활성화)을 선택하고 Microsoft: Smart Card or other certificate(Microsoft: 스마트 카드 또는 기타 인증서)를 선택합니다.

설정단추를 클릭하고 이 컴퓨터의 인증서 사용을 선택한 다음 Windows PC의 신뢰할 수 있는 CA를 선택합니다.

인증서 인증 활성화

Authentication(인증), Additional Settings(추가 설정)로 이동합니다. 드롭다운 목록에서 사용자 또는 컴퓨터 인증을 선택합니다.

인증 모드 지정

2단계. 클라이언트 인증서 확인

Certificates - Current User > Personal > Certificates로 이동하고 인증에 사용되는 클라이언트 인증서를 확인합니다.

클라이언트 인증서 확인

클라이언트 인증서를 두 번 클릭하고 Details(세부사항)로 이동한 다음 Subject(주체), CRL Distribution Points(CRL 배포 지점), Authority Information Access(권한 정보 액세스)의 세부사항을 확인합니다.

- 제목: CN = clientcertCN

- CRL 배포 지점: http://winserver.ad.rem-xxx.com/ocsp-ca.crl

- 권한 정보 액세스: http://winserver.ad.rem-xxx.com/ocsp

클라이언트 인증서 세부 정보

Windows Server의 구성

1단계. 사용자 추가

Active Directory 사용자 및 컴퓨터로 이동한 다음 사용자를 클릭합니다. 사용자 로그온 이름으로 clientcertCN을 추가합니다.

사용자 로그온 이름

2단계. OCSP 서비스 확인

Windows로 이동하여 Online Responder Management를 클릭합니다. OCSP 서버의 상태를 확인합니다.

OCSP 서버 상태

winserver.ad.rem-xxx.com을 클릭하고 OCSP 서명 인증서의 상태를 확인합니다.

OCSP 서명 인증서 상태

ISE의 컨피그레이션

1단계. 장치 추가

Administration(관리) > Network Devices(네트워크 디바이스)로 이동하고 Add(추가)button(버튼)을 클릭하여 C1000 디바이스를 추가합니다.

장치 추가

2단계. Active Directory 추가

Administration(관리) > External Identity Sources(외부 ID 소스) > Active Directory로 이동하고 Connectiontab(연결 탭)을 클릭한 다음 Active Directory를 ISE에 추가합니다.

- 조인 지점 이름: AD_Join_Point

- Active Directory 도메인: ad.rem-xxx.com

Active Directory 추가

그룹 탭으로 이동하고 드롭다운 목록에서 디렉터리에서 그룹 선택을 선택합니다.

디렉터리에서 그룹 선택

그룹 검색(Retrieve Groups)시작(From) 드롭다운 목록을 누릅니다. Checkad.rem-xxx.com/Users/Cert Publishers(게시자)를 클릭하고 OK(확인)를 클릭합니다.

인증서 게시자 확인

3단계. 인증서 인증 프로파일 추가

Administration(관리) > External Identity Sources(외부 ID 소스) > Certificate Authentication Profile(인증서 인증 프로파일)로 이동하고 Add(추가) 버튼을 클릭하여 새 인증서 인증 프로파일을 추가합니다.

- 이름: cert_authen_profile_test

- ID 저장소: AD_Join_Point

- Use Identity From Certificate Attribute: Subject - Common Name(인증서의 ID 사용 특성: Subject - 공용 이름)

- ID 저장소의 인증서와 클라이언트 인증서 일치: ID 모호성을 해결하는 용도로만 사용됩니다.

인증서 인증 프로파일 추가

4단계. ID 소스 시퀀스 추가

Administration(관리) > Identity Source Sequences(ID 소스 시퀀스)로 이동하여 ID 소스 시퀀스를 추가합니다.

- 이름: Identity_AD

- Certificate Authentication Pro를 선택합니다file: cert_authen_profile_test

- 인증 검색 목록: AD_Join_Point

ID 소스 시퀀스 추가

5단계. ISE의 인증서 확인

Administration > Certificates > System Certificates로 이동하여 서버 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 확인합니다.

서버 인증서

Administration(관리) > Certificates(인증서) > OCSP Client Profile(OCSP 클라이언트 프로파일)로 이동하고 Add(추가) 버튼을 클릭하여 새 OCSP 클라이언트 프로파일을 추가합니다.

- 이름: ocsp_test_profile

- OCSP 응답자 URL 구성: http://winserver.ad.rem-xxx.com/ocsp

OCSP 클라이언트 프로파일

Administration > Certificates > Trusted Certificates로 이동하여 신뢰할 수 있는 CA를 ISE로 가져오는지 확인합니다.

신뢰할 수 있는 CA

CA를 선택하고 Edit(편집) 버튼을 클릭하여 Certificate Status Validation(인증서 상태 검증)에 대한 OCSP 컨피그레이션의 세부 정보를 입력합니다.

- OCSP 서비스에 대해 확인: ocsp_test_profile

- OCSP가 UNKNOWN 상태를 반환하는 경우 요청 거부: check

- OCSP 응답기에 연결할 수 없는 경우 요청을 거부합니다.

인증서 상태 검증

6단계. 허용되는 프로토콜 추가

Policy(정책) > Results(결과) > Authentication(인증) > Allowed Protocols(허용된 프로토콜)로 이동하고 Default Network Access(기본 네트워크 액세스) 서비스 목록을 수정한 다음 Allow EAP-TLS(EAP-TLS 허용)를 선택합니다.

EAP-TLS 허용

7단계. 정책 집합 추가

Policy(정책) > Policy Sets(정책 세트)로 이동하고 +를 클릭하여 정책 세트를 추가합니다.

- 정책 집합 이름: EAP-TLS-Test

- 조건: RADIUS와 같은 네트워크 액세스 프로토콜

- 허용되는 프로토콜/서버 시퀀스: 기본 네트워크 액세스

정책 집합 추가

8단계. 인증 정책 추가

인증 정책을 추가하려면 Policy Sets(정책 집합)로 이동하고 EAP-TLS-Tests를 클릭합니다.

- 규칙 이름: EAP-TLS-Authentication

- 조건: 네트워크 액세스 EapAuthentication은 EAP-TLS 및 Wired_802.1 X와 같음

- 사용: Identity_AD

인증 정책 추가

9단계. 권한 부여 정책 추가

Policy Sets(정책 집합)로 이동하고 EAP-TLS-Test를 클릭하여 권한 부여 정책을 추가합니다.

- 규칙 이름: EAP-TLS-Authorization

- 조건: CERTIFICATE Subject - Common Name EQUALS clientcertCN(인증서 주체 - 공통 이름이 clientcertCN)

- 결과: Permit Access

권한 부여 정책 추가

다음을 확인합니다.

1단계. 인증 세션 확인

C1000에서 인증 세션을 확인하려면 명령을 실행합니다show authentication sessions interface GigabitEthernet1/0/3 details.

Switch#show authentication sessions interface GigabitEthernet1/0/3 details

Interface: GigabitEthernet1/0/3

MAC Address: b496.9114.398c

IPv6 Address: Unknown

IPv4 Address: 192.168.10.10

User-Name: clientcertCN

Status: Authorized

Domain: DATA

Oper host mode: multi-auth

Oper control dir: both

Session timeout: N/A

Restart timeout: N/A

Periodic Acct timeout: N/A

Session Uptime: 111s

Common Session ID: 01C20065000000933E4E87D9

Acct Session ID: 0x00000078

Handle: 0xB6000043

Current Policy: POLICY_Gi1/0/3

Local Policies:

Service Template: DEFAULT_LINKSEC_POLICY_SHOULD_SECURE (priority 150)

Server Policies:

Method status list:

Method State

dot1x Authc Success

2단계. Radius 라이브 로그 확인

ISE GUI에서 Operations(운영) > RADIUS > Live Log(라이브 로그)로 이동하여 인증을 위한 라이브 로그를 확인합니다.

Radius 라이브 로그

자세한 인증 라이브 로그를 확인합니다.

인증 세부 정보

문제 해결

1. 디버그 로그

이 디버그 로그(prrt-server.log)는 ISE에서 인증의 자세한 동작을 확인하는 데 도움이 됩니다.

- 런타임 AAA

// OCSP request and response

Crypto,2024-06-05 09:43:33,064,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, CryptoLib.CSSL.OCSP Callback - starting OCSP request to primary,SSL.cpp:1444

Crypto,2024-06-05 09:43:33,064,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - Start processing OCSP request, URL=http://winserver.ad.rem-xxx.com/ocsp, use nonce=1,OcspClient.cpp:144

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - Received OCSP server response,OcspClient.cpp:411

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - Nonce verification passed,OcspClient.cpp:426

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - OCSP responser name 8CD12ECAB78607FA07194126EDA82BA7789CE00C,OcspClient.cpp:462

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - Verify response signature and KU/EKU attributes of response signer certificate,OcspClient.cpp:472

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - Response signature verification passed,OcspClient.cpp:482

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - Response contains 1 single responses for certificates,OcspClient.cpp:490

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, Crypto.OcspClient::performRequest - User certificate status: Good,OcspClient.cpp:598

Crypto,2024-06-05 09:43:33,104,DEBUG,0x7f9822961700,NIL-CONTEXT,Crypto::Result=0, CryptoLib.CSSL.OCSP Callback - perform OCSP request succeeded, status: Good,SSL.cpp:1684

// Radius session

Radius,2024-06-05 09:43:33,120,DEBUG,0x7f982d7b9700,cntx=0000017387,sesn=ise32-01/506864164/73,CPMSessionID=01C20065000000933E4E87D9,CallingStationID=B4-96-91-14-39-8C,RADIUS PACKET:: Code=1(AccessRequest) Identifier=238 Length=324

[1] User-Name - value: [clientcertCN]

[4] NAS-IP-Address - value: [1.x.x.101]

[5] NAS-Port - value: [50103]

[24] State - value: [37CPMSessionID=01C20065000000933E4E87D9;31SessionID=ise32-01/506864164/73;]

[87] NAS-Port-Id - value: [GigabitEthernet1/0/3]

Radius,2024-06-05 09:43:33,270,DEBUG,0x7f982d9ba700,cntx=0000017387,sesn=ise32-01/506864164/73,CPMSessionID=01C20065000000933E4E87D9,user=clientcertCN,CallingStationID=B4-96-91-14-39-8C,RADIUS PACKET:: Code=2(AccessAccept) Identifier=238 Length=294

[1] User-Name - value: [clientcertCN]

Radius,2024-06-05 09:43:33,342,DEBUG,0x7f982d1b6700,cntx=0000017401,sesn=ise32-01/506864164/74,CPMSessionID=01C20065000000933E4E87D9,CallingStationID=B4-96-91-14-39-8C,RADIUS PACKET:: Code=4(AccountingRequest) Identifier=10 Length=286

[1] User-Name - value: [clientcertCN]

[4] NAS-IP-Address - value: [1.x.x.101]

[5] NAS-Port - value: [50103]

[40] Acct-Status-Type - value: [Interim-Update]

[87] NAS-Port-Id - value: [GigabitEthernet1/0/3]

[26] cisco-av-pair - value: [audit-session-id=01C20065000000933E4E87D9]

[26] cisco-av-pair - value: [method=dot1x] ,RADIUSHandler.cpp:2455

Radius,2024-06-05 09:43:33,350,DEBUG,0x7f982e1be700,cntx=0000017401,sesn=ise32-01/506864164/74,CPMSessionID=01C20065000000933E4E87D9,user=clientcertCN,CallingStationID=B4-96-91-14-39-8C,RADIUS PACKET:: Code=5(AccountingResponse) Identifier=10 Length=20,RADIUSHandler.cpp:2455

2. TCP 덤프

ISE의 TCP 덤프에서 OCSP 응답 및 Radius 세션에 대한 정보를 찾을 수 있습니다.

OCSP 요청 및 응답:

OCSP 요청 및 응답의 패킷 캡처

OCSP 응답의 세부사항 캡처

Radius 세션:

Radius 세션의 패킷 캡처

관련 정보

ISE를 사용하여 EAP-TLS 인증 구성

ISE에서 TLS/SSL 인증서 구성