はじめに
このドキュメントでは、証明書ベースの自動登録用にZTNAを設定するために必要な手順について説明します。
前提条件
- Secure Clientバージョン5.1.9.x以上
- Windows用トラステッドプラットフォームモジュール(TPM)
- Appleデバイス向けセキュアエンクレーブコプロセッサ
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- TPMバージョン2.0を搭載したWindows 11
- セキュアクライアントバージョン5.1.10.17(ZTNAおよびDUOモジュール有効)
- Microsoft Active Directory 2022
- 証明書を生成するためのOpenSSLツール
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
セキュアアクセスダッシュボードでの自動登録の有効化
この機能を有効にする最初の手順は、セキュアアクセス自動登録機能を有効にすることです。この機能には次が含まれます。
1. [ダッシュボード] -> [接続] -> [エンドユーザーの接続] -> [ゼロ信頼]に移動します
2. 「管理」オプションをクリックします。

3. 証明書の使用を有効にします。
4. CA証明書をローカルの認証局からダウンロードしてアップロードします。
5. 登録構成をダウンロードし、オペレーティングシステムに基づいてディレクトリに配置します。
- Windows:C:\ProgramData\Cisco\Cisco Secure Client\ZTA\enrollment_choices
- macOS:/opt/cisco/secureclient/zta/enrollment_choices
6. 設定が完了したら、必ず保存してください。

証明書テンプレートとインストール
セキュアアクセスには、次の必須証明書フィールドが必要です。
– サブジェクトの別名(SAN):ユーザのRFC-822準拠の電子メールアドレスまたはユーザプリンシパル名(UPN)を含みます。
例:
オプション1:RFC822準拠の電子メール
email.1 = username@domain.local
オプション2:(代替):UPN(Microsoft固有)
otherName:1.3.6.1 .4.1.311.20.2.3;UTF8:username@domain.local
この例では、Microsoft ADのユーザ証明書テンプレートを使用して証明書を生成します。
ステップ1:Microsoft ADに移動し、証明書マネージャを開きます
ステップ2: [ファイル名を指定して実行]を開き、Microsoft管理コンソール(mmc)に入ります

ステップ3:[ファイル]をクリックし、スナップインを追加/削除します。
ステップ4:証明書テンプレートの追加
ステップ5:ユーザ証明書の複製

ステップ6:説明に従って設定を行います
1. 新しいテンプレート名: (General)タブのztna-client-enroll。
2. (サブジェクト名)タブで(要求で指定)を選択します。
注:これにより、Service Alternative Name(SAN)などのopensslテンプレートで提供されるオプションが受け入れられるようになります
ステップ7:OKをクリックして新しいテンプレートを保存します。
ステップ8:次の手順を実行して、新しいテンプレートをADテンプレートリストに追加します。
1. certsrv.mscを実行します
2. Certificate Templatesを右クリックし、New -> certificate template to issueを選択します
3. 新しく作成したテンプレートを選択します(ztna-client-enroll)

Opensslを使用した証明書の作成
ステップ1:コンテンツを含むsan.cnfファイルを作成します。
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[ dn ]
C = US
ST = Texas
L = Austin
O = exampleusername
OU = IT
CN = exampleusername
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
# Option 1: RFC822-compliant email
email.1 = user@domain.local
# Option 2 (alternative): UPN (Microsoft-specific)
#otherName:1.3.6.1.4.1.311.20.2.3;UTF8:user@domain.local
ステップ2:テンプレートを使用して証明書を作成する
openssl genrsa -out user.key 2048
openssl req -new -key user.key -out user.csr
openssl req -new -key user.key -out user.csr -config san.cnf
CA ZTNAテンプレートを使用したユーザ証明書の署名
ステップ1:ファイルuser.csrの内容をコピーします。
ステップ2:ローカルAD署名機関(https:http://<ip-address>/certsrv/)に移動します。
ステップ3:Request a Certificate -> Advanced Certificate Request -> select ztna-client-enroll templateをクリックします。

ステップ4:Base64形式の証明書をダウンロードし、ユーザの個人信頼ストア証明書にインストールします。
ステップ5:証明書に正しい情報が存在することを確認します。

ステップ6:登録を開始するためにZTNAモジュールを再起動します。
確認
このセクションでは、設定が正常に動作していることを確認します。
ステップ1:登録選択ファイルを設定するときのZTNAモジュールメッセージ:

ステップ2:ZTNAモジュールを初めて再起動した後、ZTNAに自動登録されていることを確認できます

ステップ3:SAN情報に基づくアクティビティ検索に表示される正しいユーザを確認します。

ステップ4:証明書に正しい情報が存在することを確認します。

トラブルシュート
このセクションでは、設定のトラブルシューティングに役立つ情報を紹介します。
ステップ1:適切な情報が証明書に存在し、正しい証明書ストアにインストールされていることを確認します。

ステップ2:DARTを使用して、証明書の要件に基づいて登録が失敗していないことを確認します。
ステップ3:UZTNAを使用している場合は、FTDの外部インターフェイスを正しく解決できることを確認します。
共通エラー:
2025-06-16 05:44:45.609237 csc_zta_agent[0x00001638, 0x00000e58] T/ NetworkTransportStateTracker.cpp:110 NetworkTransportStateTracker::transitionState() transitoned state: Initialized->Connecting
2025-06-16 05:44:45.609237 csc_zta_agent[0x00001638, 0x00000e58] T/ AppSocketTransport.cpp:231 AppSocketTransport::OnNextTransportStateChange() tcp:51470__20.20.20.150 05411A30 stream=189 nextTransportState: Connecting
2025-06-16 05:44:45.609237 csc_zta_agent[0x00001638, 0x00000e58] T/ NetworkTransportStateTracker.cpp:110 NetworkTransportStateTracker::transitionState() transitoned state: Initialized->Connecting
2025-06-16 05:44:45.609237 csc_zta_agent[0x00001638, 0x00000e58] I/ TcpTransport.cpp:114 TcpTransport::ConnectTransport() headendInfo=TCP destination [ftd.marvel.local]:443
2025-06-16 05:44:45.609237 csc_zta_agent[0x00001638, 0x00000e58] T/ NetworkTransportStateTracker.cpp:110 NetworkTransportStateTracker::transitionState() transitoned state: Initialized->Connecting
2025-06-16 05:44:45.610238 csc_zta_agent[0x00001638, 0x00000e58] T/ TcpTransport.cpp:150 TcpTransport::ConnectTransport() resolving dns for ftd.marvel.local
2025-06-16 05:44:45.610238 csc_zta_agent[0x00001638, 0x00000e58] E/ TcpTransport.cpp:166 TcpTransport::handleDnsResolveComplete() dns resolve error No such host is known
関連情報