はじめに
このドキュメントでは、リアルタイムのクライアント証明書失効チェックのためにOCSPでEAP-TLS認証を設定するために必要な手順について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco Identity Services Engineの設定
- Cisco Catalyst設定
- オンライン証明書ステータスプロトコル
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- Identity Services Engine仮想3.2パッチ6
- C1000-48FP-4G-L 15.2(7)E9
- Windows Server 2016
- Windows 10
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
ネットワーク図
次の図は、このドキュメントの例で使用するトポロジを示しています。
ネットワーク図
背景説明
EAP-TLSでは、認証プロセスの一部として、クライアントがサーバにデジタル証明書を提示します。 このドキュメントでは、ADサーバに対して証明書の共通名(CN)を確認し、リアルタイムのプロトコルステータスを提供するOCSP(Online Certificate Status Protocol)を使用して証明書が失効したかどうかを確認することによって、ISEがクライアント証明書を検証する方法について説明します。
Windows Server 2016で設定されるドメイン名は、このドキュメントの例で使用するad.rem-xxx.comです。
このドキュメントで参照されているOCSP(Online Certificate Status Protocol)およびAD(Active Directory)サーバは、証明書の検証に使用されます。
これは、ドキュメントで使用される各証明書の共通名を持つ証明書チェーンです。
- 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に移動し、checkEnable IEEE 802.1X authentication にチェックマークを付けて、Microsoft: Smart Card or other certificateを選択します。
Settingsボタンをクリックし、Use a certificate on this computerにチェックマークを入れて、Windows PCの信頼済みCAを選択します。
証明書認証の有効化
Authenticationに移動し、Additional Settingsをチェックします。ドロップダウンリストからUserまたはcomputer authenticationfromを選択します。
認証モードの指定
ステップ 2:クライアント証明書の確認
Certificates - Current User > Personal > Certificatesの順に移動し、認証に使用するクライアント証明書を確認します。
クライアント証明書の確認
クライアント証明書をダブルクリックし、Detailsに移動して、Subject、CRL Distribution Points、Authority Information Accessの詳細をチェックします。
クライアント証明書の詳細
Windows Serverでの設定
ステップ 1:ユーザの追加
Active Directory Users and Computersに移動し、Usersをクリックします。ユーザのログオン名としてclientcertCNを追加します。
ユーザーログオン名
ステップ 2:OCSPサービスの確認
Windowsに移動し、オンラインレスポンダー管理をクリックします。OCSPサーバのステータスを確認します。
OCSPサーバのステータス
winserver.ad.rem-xxx.comをクリックし、OCSP署名証明書のステータスを確認します。
OCSP署名証明書のステータス
ISEでの設定
ステップ 1:デバイスの追加
Administration > Network Devicesの順に移動し、AddbuttonをクリックしてC1000デバイスを追加します。
デバイスの追加
ステップ 2:Active Directoryの追加
Administration > External Identity Sources > Active Directoryの順に移動し、Connectiontabをクリックし、Active DirectoryをISEに追加します。
- [結合ポイント名]: AD_Join_Point
- Active Directoryドメイン:ad.rem-xxx.com
Active Directoryの追加
Groupsタブに移動し、select Groups From Directoryfromドロップダウンリストを選択します。
ディレクトリからグループを選択
[グループの取り出し]ドロップダウンリストをクリックします。Checkad.rem-xxx.com/Users/Cert Publishers と入力して、OKをクリックします。
証明書の発行元の確認
ステップ 3:証明書認証プロファイルの追加
Administration > External Identity Sources > Certificate Authentication Profileの順に移動し、Addボタンをクリックして、新しい証明書認証プロファイルを追加します。
- 名前:cert_authen_profile_test
- IDストア: AD_Join_Point
- 証明書属性のIdを使用:件名 – 共通名。
- Match Client Certificate With Certificate In Identity Store:IDのあいまいさを解決するためだけに使用します。
証明書認証プロファイルの追加
ステップ 4:アイデンティティソースシーケンスの追加
Administration > Identity Source Sequencesの順に移動し、Identity Source Sequenceを追加します。
- 名前:Identity_AD
- Certificate Authentication Proを選択します。file: cert_authen_profile_test
- 認証検索リスト:AD_Join_Point
アイデンティティソースシーケンスの追加
ステップ 5:ISEでのconfrim証明書
Administration > Certificates > System Certificatesの順に移動し、サーバ証明書が信頼できるCAによって署名されていることを確認します。
サーバ証明書
Administration > Certificates > OCSP Client Profileの順に移動し、Addボタンをクリックして新しいOCSPクライアントプロファイルを追加します。
OCSPクライアントプロファイル
Administration > Certificates > Trusted Certificatesの順に移動し、信頼できるCAがISEにインポートされていることを確認します。
信頼済みCA
CAをチェックしてEditボタンをクリックし、Certificate Status Validation用にOCSP設定の詳細を入力します。
- OCSPサービスに対する検証:ocsp_test_profile
- OCSPがUNKNOWNステータスを返す場合は、要求を拒否します。
- OCSPレスポンダが到達不能な場合は要求を拒否します。確認してください。
証明書ステータスの検証
手順 6:許可されたプロトコルの追加
Policy > Results > Authentication > Allowed Protocolsの順に移動し、Default Network Accessサービスリストを編集して、Allow EAP-TLSにチェックマークを付けます。
EAP-TLSを許可する
手順 7:ポリシーセットの追加
Policy > Policy Setsの順に移動し、+ をクリックしてポリシーセットを追加します。
- ポリシーセット名:EAP-TLS-Test
- 条件:ネットワークアクセスプロトコルがRADIUSと等しい
- 許可されるプロトコル/サーバシーケンス:デフォルトのネットワークアクセス
ポリシーセットの追加
ステップ 8:認証ポリシーの追加
Policy Setsに移動し、EAP-TLS-Testingをクリックして認証ポリシーを追加します。
- ルール名: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
- 結果:PermitAccess
許可ポリシーの追加
確認
ステップ 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の順に移動し、認証のライブログを確認します。
Radiusライブログ
認証の詳細なライブログを確認します。
認証の詳細
トラブルシュート
1. デバッグログ
このデバッグログ(prrt-server.log)は、ISEでの認証の詳細な動作を確認するのに役立ちます。
// 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証明書の設定