はじめに
Catalyst 9800 シリーズ (Cat9800) は、DNA Center (DNAC) と TLS 通信するために、DNAC からクライアント証明書を発行してもらいます。発行されたクライアント証明書が、Cat9800 では sdn-network-infra-iwan という Trustpoint に保存されます。Trustpoint とは、Cat9800 の証明書チェーンを保存する仕組みです。
このクライアント証明書が期限切れになると、Cat9800 と DNAC の TLS Handshake が失敗し、Telemetry データが収集できなくなり、Cat9800 が Unmonitored 状態になります。
DNAC のバージョン 1.3.3.8 以降は、CSCvu25442 により、クライアント証明書の Automatic Renewal が実装されていますが、それより前のバージョンを使い続けているユーザは、導入 1 年後に証明書の期限が切れるため、手動での更新が必要です。
本ドキュメントは 、手動での Trustpoint sdn-network-infra-iwan クライアント証明書の更新手順をご紹介します。
更新の実施時期
前述したように、DNAC 1.3.3.8 より前のバージョンを使っている場合、導入 1 年後に証明書の期限が切れます。期限切れが近くなったら、Cat9800 では下記のように、Warning メッセージが出力されます。Auto-Renewal が 'Not Enabled' となっているのは、手動での証明書更新が必要であることを示しています。
Feb 8 2021 14:24:36.869 UTC: %PKI-4-CERT_EXPIRY_WARNING: ID Certificate belonging to trustpoint sdn-network-infra-iwan will expire in 59 Days 23 hours 57 mins 34 secs at 2021-04-09T23:22:10Z.
<省略>
Auto-Renewal : Not Enabled
証明書の期限が切れると、下記の Cat9800 のコマンドで Telemetry のための TLS 接続が失敗していることを確認できます。State が Active にならず、Connecting のままになっているのは分かります。
Catalyst9800# show telemetry internal connection
Telemetry connection
Peer Address Port VRF Source Address Transport State Profile
--------------- ----- --- --------------- ---------- ------------- -------------
x.x.x.x 25103 0 x.x.x.x tls-native Connecting sdn-network-infra-iwan
上記のいずれかが確認されたら、証明書の更新を実施するようにして下さい。
事前準備
証明書更新の際に、Cat9800 と DNAC 間で NTP が同期していることが必須です。下記のコマンドで NTP の状態を確認しておいて下さい。
Cat9800:
show ntp associations detail
show ntp status
DNAC:
ntpq -c rv
ntpq -pn
期限切れクライアント証明書の削除
DNAC 側で API Tester (Swagger) を使って証明書を削除:
1. ブラウザから Cisco DNA Center にログイン後、別のタブで https://{{DNA_CENTER_IP}}/dna/apitester を開く
2. Available APIs より PKI Broker Service を選択し、"pki-broker" をクリックする
3. GET /trust-point を展開し、"Try it out!" をクリックする
4. RESPONSE BODY に Trustpoint ID が表示されるのでその値を確認する
5. DELETE /trust-point/{trustPointId} を展開し、[4] で取得した Trustpoint ID を入力して "Try it out!" をクリックする
6. 再度 [3] の GET /trust-point にて "Try it out!" をクリックし、上記 Trustpoint ID を含むデータが削除されていることを確認する
Cat9800 側にて現行の Trustpoint sdn-network-infra-iwan を削除:
7. "show crypto pki trustpoints sdn-network-infra-iwan" コマンドで Trustpoint sdn-network-infra-iwan が削除されたかを確認する (基本的には上記 DELETE で DNAC が Trustpoint: sdn-network-infra-iwan を削除する)
8. もし、[7] で出力がある場合は、下記のコマンドで Trustpoint を削除する
conf t
no crypto pki trustpoint sdn-network-infra-iwan
実行例
------
tky-dna2-ewlc(config)#no crypto pki trustpoint sdn-network-infra-iwan
% Removing an enrolled trustpoint will destroy all certificates
received from the related Certificate Authority.
Are you sure you want to do this? [yes/no]: yes
% Be sure to ask the CA administrator to revoke your certificates.
------
DNAC 側で新規の Trustpoint を作成
9. [1] の API Tester ページにて POST /trust-point を展開し、PARAMETERS > pkiTrustPointInput に以下のような JSON を入力して “Try it out!” をクリックする。
{
"serialNumber": "98Z0OMN64FS",
"entityName": "tky-dna2-ewlc",
"controllerIpAddress": "192.168.1.20",
"platformId": "C9800-CL-K9",
"trustProfileName": "sdn-network-infra-iwan"
}
'serialNumber'、'entityName'、'platformID' はそれぞれ Cat9800 のシリアル番号、ホスト名、型番を表しており、'show inventory' などで確認できます。'controllerIpAddress' は DNAC の IP アドレスです。
10. [3] の GET /trust-point にて "Try it out!" をクリックし、新しい Trustpoint ID を確認する
11. GET /trust-point/{trustPointId}/config を展開し、trustPointId 欄に新しい Trustpoint ID を入力して "Try it out!" をクリックする
12. Cat9800 側で実行すべきコマンドが表示される
Cat9800 にてクライアント証明書をインポート
Cat9800 で以下のコマンドを実行:
conf t
crypto pki trustpoint sdn-network-infra-iwan
enrollment mode ra
enrollment terminal
usage ssl-client
revocation-check crl none
exit
上記「12」で表示される crypto pki import コマンドを実行
実行例
------
tky-dna2-ewlc(config)#crypto pki import sdn-network-infra-iwan pkcs12 http://192.168.1.20:80/api/v1/trust-point/pkcs12/f25466d6-2f6c-40e7-94eb-d6ecdf216fab/3hdb5nq67ou4bkfl9u9f3lr1mh password hbtkbn210drikuobs56qt26uh1
% Importing pkcs12...
Address or name of remote host [192.168.1.20]?
Source filename [api/v1/trust-point/pkcs12/f25466d6-2f6c-40e7-94eb-d6ecdf216fab/3hdb5nq67ou4bkfl9u9f3lr1mh]?
Reading file from http://192.168.1.20:80/api/v1/trust-point/pkcs12/f25466d6-2f6c-40e7-94eb-d6ecdf216fab/3hdb5nq67ou4bkfl9u9f3lr1mh
Loading http://192.168.1.20:80/api/v1/trust-point/pkcs12/f25466d6-2f6c-40e7-94eb-d6ecdf216fab/3hdb5nq67ou4bkfl9u9f3lr1mh
CRYPTO_PKI: Imported PKCS12 file successfully.
------
end
write memory
show crypto pki trustpoints sdn-network-infra-iwan
show crypto pki certificates sdn-network-infra-iwan
show telemetry internal connection
(Status = Active であることを確認)
DNAC にて Resync を実行
DNAC GUI にて下記の実行:
14. PROVISION > Devices > Inventory ページにて Cat9800 を選択し、Actions > Inventory > Resync Device