目錄

簡介

必要條件

需求

採用元件

設定

A部分：思科身分識別服務引擎3.3憑證組態

步驟 1:生成anISEServer pxGrid證書

步驟 2:使用外部CA建立ISE伺服器pxGrid證書

步驟 3:將CA根證書匯入ISE信任儲存

步驟 4:將ISE證書繫結到證書簽名請求(CSR)。

B部分：正在將CA根證書新增到WSA證書信任庫

整合

A部分：為ISE整合啟用WSA並為WSA客戶端證書生成CSR。

B部分：使用外部CA簽署WSA客戶端CSR

C部分：將WSA客戶端證書繫結到證書簽名請求(CSR)並整合。

驗證

疑難排解

問題

解決方案

已知瑕疵

簡介

本文檔介紹使用pxGrid連線將ISE 3.3與思科安全網路裝置(WSA)整合的過程。

必要條件

需求

思科建議瞭解以下主題：

- 身分識別服務引擎

- Cisco Secure Web Appliance (WSA)

- 平台交換網格(pxGrid)

- TLS/SSL證書。

- Windows Server 2016上的PKI

採用元件

本文中的資訊係根據以下軟體和硬體版本：

- 身分識別服務引擎(ISE)版本3.3補丁4

- 思科安全Web裝置版本15.2.0-116

- Windows server 2016作為外部證書頒發機構(CA)伺服器。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

設定

A部分：思科身分識別服務引擎3.3憑證組態

步驟 1:生成anISEServer pxGrid證書

為ISE伺服器pxGrid證書生成CSR:

1.登入思科身分識別服務引擎(ISE)GUI。

2.導航到管理>系統>證書>證書管理>證書簽名請求。

3. 選擇產生憑證簽署請求(CSR)。

4.選擇「使用證書」作為欄位。

5. SelectISE 節點為其生成證書。

6.根據需要填寫其他證書詳細資訊。

7. ClickGenerate。

8.按一下「匯出」並在本地儲存檔案。

步驟 2:使用外部CA建立ISE伺服器pxGrid證書

1.導覽至MS Active Directory Certificate Service，https://server/certsrv/，其中伺服器是MS伺服器的IP或DNS。

2. ClickRequest a certificate。

3.選擇提交高級證書請求。

4.將上一節中生成的CSR的內容複製到「儲存的請求」欄位中。

5.選擇pxGridas證書模板，然後單擊Submit。

附註：使用的證書模板pxGrid需要在Enhanced Key Usage欄位中同時進行客戶端身份驗證和伺服器身份驗證。

6.下載生成的證書inBase-64format，然後將其另存為ISE_pxGrid.cer。

步驟 3:將CA根證書匯入ISE信任儲存

1.導航至MS Active Directory證書服務首頁，然後選擇下載CA證書、證書鏈或CRL。

2. SelectBase-64 format，然後按一下DownloadCA certificate。

3.將證書另存為CA_Root.cer。

4.登入思科身分識別服務引擎(ISE)GUI。

5.選擇「管理」>「系統」>「證書」>「證書管理」>「受信任的證書」。

6. 選擇「匯入」>「證書檔案」並匯入根證書。

7.確保選中Trust for authentication within ISE覈取方塊。

8.單擊Submit。

步驟 4:將ISE證書繫結到證書簽名請求(CSR)。

1.登入思科身分識別服務引擎(ISE)GUI。

2.選擇管理>系統>證書>證書管理>證書簽名請求。

3.選擇上一節中生成的CSR，然後按一下繫結證書。

4.在「繫結CA簽名證書」表單上，選擇以前生成的ISE_pxGrid.cer證書。

5.為證書提供一個友好名稱，然後按一下提交。

7.單擊Yes如果系統要求替換證書。

8.選擇管理>系統>證書>系統證書。

9.在清單中，您可以看到由外部CA簽名建立的pxGrid證書。

B部分：正在將CA根證書新增到WSA證書信任庫

將CA根證書新增到WSA受信任儲存：

1.登入網路安全裝置(WSA)GUI。

2.導覽至Network > Certificate Management > Manage Trusted Root Certificates。

3. 匯入並上傳CA根證書，然後按一下提交。

4.按一下提交更改以應用更改。

現在已部署證書，繼續整合。

整合

在繼續整合之前，請確保：

對於Cisco ISE，在Administration > pxGrid Services > SettingsandCheck下自動批准客戶端請求的新基於證書的帳戶以自動批准和儲存。

A部分：為ISE整合啟用WSA並為WSA客戶端證書生成CSR。

1.登入網路安全裝置(WSA)GUI。

2.導覽至網路>識別服務>識別服務引擎。

3.按一下Enable and Edit Settings。

4.輸入主ISE pxGrid節點IP地址或FQDN。

5.上傳主pxGrid節點的CA根證書。

6.輸入輔助ISE pxGrid節點IP地址或FQDN。（可選）

7.上傳輔助pxGrid節點的CA根證書。（選用）

附註：每個ISE部署只能有兩個pxGrid節點。它用作pxGrid主用 — 備用配置；一次只能有一個ISE+pxGrid節點處於活動狀態。在pxGrid主用 — 備用配置中，所有資訊都通過PPAN，其中第二個ISE+pxGrid節點保持非活動狀態。

8.滾動到Web Appliance Client Certificate部分，然後按一下Generate New Certificate and Key。

9.根據需要填寫證書詳細資訊，然後按一下「生成」。

附註：證書期限必須為介於24個月和60個月之間的整數，國家/地區必須為ISO兩個字元的國家代碼（僅限大寫字母）。

10.按一下「Download Certificate Signing Request」。

11.按一下Submit。

12.按一下提交更改以應用更改。

警告：如果不提交和提交上述更改，並直接上傳簽名證書並執行提交，則整合過程中可能會遇到問題。

B部分：使用外部CA簽署WSA客戶端CSR

1.導覽至MS Active Directory Certificate Service,https://server/certsrv/，其中伺服器是MS伺服器的IP或DNS。

2. ClickRequest證書。

3.選擇提交高級證書請求。

4.將上一節中生成的CSR的內容複製到「儲存的請求」欄位中。

5.選擇pxGridas證書模板，然後單擊Submit。

附註：附註：使用的證書模板pxGrid需要在Enhanced Key Usage欄位中同時進行客戶端身份驗證和伺服器身份驗證。

6.下載生成的證書inBase-64format，並將其另存為WSA-Client.cer。

C部分：將WSA客戶端證書繫結到證書簽名請求(CSR)並整合。

1.導航至網路安全裝置(WSA)GUI。

2.導覽至網路>識別服務>識別服務引擎。

3.按一下Edit Settings。

4.導覽至Web Appliance Client Certificate 部分。

5.在signed certificate部分下，Upload the signed certificate WSA-Client.cer

6.按一下Submit。

7.按一下提交更改以應用更改。

8.單擊「編輯設定」。

9.滾動到測試與ISE節點的通訊，然後按一下開始測試，結果如下：

測試與ISE節點的通訊

測試與ISE節點的通訊

Checking DNS resolution of ISE pxGrid Node hostname(s) ...

Success: Resolved '10.127.197.128' address: 10.127.197.128

Validating WSA client certificate ...

Success: Certificate validation successful

Validating ISE pxGrid Node certificate(s) ...

Success: Certificate validation successful

Checking connection to ISE pxGrid Node(s) ...

Trying primary PxGrid server...

SXP not enabled.

ERS not enabled.

Preparing TLS connection...

Completed TLS handshake with PxGrid successfully.

Trying download user-session from (https://ise33.lab.local:8910)...

Failure: Failed to download user-sessions.

Trying download SGT from (https://ise33.lab.local:8910)...

Able to Download 17 SGTs.

Skipping all SXP related service requests as SXP is not configured.

Success: Connection to ISE pxGrid Node was successful.

Test completed successfully.

驗證

在Cisco ISE上，導航到管理>pxGrid Services >客戶端管理>客戶端。

這會將WSA生成為statusEnabled的pxgrid客戶端。

要驗證思科ISE上的主題訂閱，請導覽至Administration >pxGrid Services > Diagnostics > Websocket > Clients:

Cisco ISE Pxgrid-server.log TRACE level.reference。

{"timestamp":1742395398803,"level":"INFO","type":"WS_SERVER_CONNECTED","host":"ise33","client":"wsabgl.lab.local_ised","server":"wss://ise33.lab.local:8910/pxgrid/ise/pubsub","message":"WebSocket connected. session\u003d[id\u003d4,client\u003dwsabgl.lab.local_ised,server\u003dwss://ise33.lab.local:8910/pxgrid/ise/pubsub]"}

TRACE [Thread-8][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Drop. exclude=[id=3,client=~ise-fanout-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub]

DEBUG [Thread-8][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -::::::- Authenticating null

DEBUG [Thread-8][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -::::::- Certs up to date. user=~ise-pubsub-ise33

DEBUG [Thread-8][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -::::::- preAuthenticatedPrincipal = ~ise-pubsub-ise33, trying to authenticate

DEBUG [Thread-8][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -::::::- X.509 client authentication certificate subject:CN=ise33.lab.local, OU=AAA, O=Cisco, L=Bangalore, ST=KA, C=IN, issuer:CN=Avaste-ISE, DC=avaste, DC=local

DEBUG [Thread-8][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -::::::- Authentication success: PreAuthenticatedAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=~ise-pubsub-ise33, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, credentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_USER]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=10.127.197.128, SessionId=null], Granted Authorities=[ROLE_USER]]

DEBUG [Thread-8][[]] cisco.cpm.pxgridwebapp.data.AuthzDaoImpl -::::::- requestNodeName=wsabgl.lab.local_ised serviceName=com.cisco.ise.pubsub operation=subscribe /topic/com.cisco.ise.session

DEBUG [Thread-13][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Adding subscription=[id=my-id,topic=/topic/com.cisco.ise.session]

INFO [Thread-13][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Pubsub subscribe. subscription=[id=my-id,topic=/topic/com.cisco.ise.session] session=[id=4,client=wsabgl.lab.local_ised,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub]

TRACE [WsIseClientConnection-804][[]] cpm.pxgrid.ws.client.WsEndpoint -::::::- Send. session=[id=34eae17d-594f-4dcd-b3e6-f2f644317eda,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] frame=[command=SEND,headers=[content-length=395, trace-id=6d3dcbc0a34346eeb9bafccd570f8090, destination=/topic/com.cisco.ise.pxgrid.admin.log],content-len=395] content={"timestamp":1742395398821,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"ise33","client":"wsabgl.lab.local_ised","server":"wss://ise33.lab.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003dmy-id,topic\u003d/topic/com.cisco.ise.session] session\u003d[id\u003d4,client\u003dwsabgl.lab.local_ised,server\u003dwss://ise33.lab.local:8910/pxgrid/ise/pubsub]"}

TRACE [Thread-3][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Received frame=[command=SEND,headers=[content-length=395, trace-id=6d3dcbc0a34346eeb9bafccd570f8090, destination=/topic/com.cisco.ise.pxgrid.admin.log],content-len=395], content={"timestamp":1742395398821,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"ise33","client":"wsabgl.lab.local_ised","server":"wss://ise33.lab.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003dmy-id,topic\u003d/topic/com.cisco.ise.session] session\u003d[id\u003d4,client\u003dwsabgl.lab.local_ised,server\u003dwss://ise33.lab.local:8910/pxgrid/ise/pubsub]"}

TRACE [Thread-3][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Authorized to send (cached). session=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] topic=/topic/com.cisco.ise.pxgrid.admin.log

TRACE [Thread-3][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Distribute from=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] topic=/topic/com.cisco.ise.pxgrid.admin.log content={"timestamp":1742395398821,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"ise33","client":"wsabgl.lab.local_ised","server":"wss://ise33.lab.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003dmy-id,topic\u003d/topic/com.cisco.ise.session] session\u003d[id\u003d4,client\u003dwsabgl.lab.local_ised,server\u003dwss://ise33.lab.local:8910/pxgrid/ise/pubsub]"}

TRACE [Thread-3][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Distribute distributed. subscription=[id=0,topic=/topic/com.cisco.ise.pxgrid.admin.log]

TRACE [Thread-3][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Distribute distributed. subscription=[id=2,topic=/topic/wildcard]

TRACE [sub-sender-1][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionSender -::::::- Send. subscription=[id=2,topic=/topic/wildcard] from=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] to=[id=1,client=~ise-fanout-ise33,server=wss://localhost:8910/pxgrid/ise/pubsub] message=[command=MESSAGE,headers=[content-length=395, trace-id=6d3dcbc0a34346eeb9bafccd570f8090, destination=/topic/com.cisco.ise.pxgrid.admin.log, message-id=37248],content-len=395]

TRACE [sub-sender-0][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionSender -::::::- Send. subscription=[id=0,topic=/topic/com.cisco.ise.pxgrid.admin.log] from=null to=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] message=[command=MESSAGE,headers=[content-length=395, trace-id=6d3dcbc0a34346eeb9bafccd570f8090, destination=/topic/com.cisco.ise.pxgrid.admin.log, message-id=37248],content-len=395]

DEBUG [Grizzly(1)][[]] cpm.pxgrid.ws.client.WsSubscriber -::::::- onStompMessage session=[id=34eae17d-594f-4dcd-b3e6-f2f644317eda,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] subscription=[id=0,topic=/topic/com.cisco.ise.pxgrid.admin.log]

DEBUG [Grizzly(1)][[]] cpm.pxgrid.ws.client.WsSubscriber -::::::- onStompMessage session=[id=4b4d7de4-b960-49f7-afac-9adab3238481,client=~ise-fanout-ise33,server=wss://localhost:8910/pxgrid/ise/pubsub] subscription=[id=2,topic=/topic/wildcard]

TRACE [Grizzly(1)][[]] cpm.pxgrid.ws.client.WsEndpoint -::::::- Send. session=[id=dd1d138d-a640-4f4f-bd4d-169d0cf5d937,client=~ise-fanout-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] frame=[command=SEND,headers=[content-length=570, destination=/topic/distributed, from=~ise-fanout-ise33, via=~ise-fanout-ise33],content-len=570] content=MESSAGE

TRACE [Grizzly(1)][[]] cpm.pxgridwebapp.ws.distributed.FanoutDistributor -::::::- DownstreamHandler sent frame for upstream. frame=[command=SEND,headers=[content-length=570, destination=/topic/distributed, from=~ise-fanout-ise33, via=~ise-fanout-ise33],content-len=570]

TRACE [Thread-10][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Received frame=[command=SEND,headers=[content-length=570, destination=/topic/distributed, from=~ise-fanout-ise33, via=~ise-fanout-ise33],content-len=570], content=MESSAGE

TRACE [Thread-10][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Authorized to send (cached). session=[id=3,client=~ise-fanout-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] topic=/topic/distributed

疑難排解

問題

未知CA問題，在WSA上，ISE連線測試失敗，出現錯誤。失敗：與ISE PxGrid伺服器的連線超時。

Cisco ISE Pxgrid-server.log TRACE level.reference。

ERROR [Thread-8][[]] cisco.cpm.pxgrid.cert.LoggingTrustManagerWrapper -::::::- checkClientTrusted exception.message=PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target principle=CN=wsabgl.lab.local, OU=Security, O=AAA, C=IN

TRACE [WsIseClientConnection-804][[]] cpm.pxgrid.ws.client.WsEndpoint -::::::- Send. session=[id=34eae17d-594f-4dcd-b3e6-f2f644317eda,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] frame=[command=SEND,headers=[content-length=338, trace-id=0f31b9311a2940a9bdeb0c8c647f6083, destination=/topic/com.cisco.ise.pxgrid.admin.log],content-len=338] content={"timestamp":1742395129748,"level":"ERROR","host":"ise33","message":"checkClientTrusted exception.message\u003dPKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target principle\u003dCN\u003dwsabgl.lab.local, OU\u003dSecurity, O\u003dAAA, C\u003dIN"}

TRACE [Thread-9][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Received frame=[command=SEND,headers=[content-length=338, trace-id=0f31b9311a2940a9bdeb0c8c647f6083, destination=/topic/com.cisco.ise.pxgrid.admin.log],content-len=338], content={"timestamp":1742395129748,"level":"ERROR","host":"ise33","message":"checkClientTrusted exception.message\u003dPKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target principle\u003dCN\u003dwsabgl.lab.local, OU\u003dSecurity, O\u003dAAA, C\u003dIN"}

TRACE [Thread-9][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::- Authorized to send (cached). session=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] topic=/topic/com.cisco.ise.pxgrid.admin.log

TRACE [Thread-9][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Distribute from=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] topic=/topic/com.cisco.ise.pxgrid.admin.log content={"timestamp":1742395129748,"level":"ERROR","host":"ise33","message":"checkClientTrusted exception.message\u003dPKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target principle\u003dCN\u003dwsabgl.lab.local, OU\u003dSecurity, O\u003dAAA, C\u003dIN"}

TRACE [Thread-9][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Distribute distributed. subscription=[id=0,topic=/topic/com.cisco.ise.pxgrid.admin.log]

TRACE [Thread-9][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::- Distribute distributed. subscription=[id=2,topic=/topic/wildcard]

TRACE [sub-sender-1][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionSender -::::::- Send. subscription=[id=2,topic=/topic/wildcard] from=[id=0,client=~ise-admin-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] to=[id=1,client=~ise-fanout-ise33,server=wss://localhost:8910/pxgrid/ise/pubsub] message=[command=MESSAGE,headers=[content-length=338, trace-id=0f31b9311a2940a9bdeb0c8c647f6083, destination=/topic/com.cisco.ise.pxgrid.admin.log, message-id=37180],content-len=338]

DEBUG [Grizzly(2)][[]] cpm.pxgrid.ws.client.WsSubscriber -::::::- onStompMessage session=[id=4b4d7de4-b960-49f7-afac-9adab3238481,client=~ise-fanout-ise33,server=wss://localhost:8910/pxgrid/ise/pubsub] subscription=[id=2,topic=/topic/wildcard]

TRACE [Grizzly(2)][[]] cpm.pxgrid.ws.client.WsEndpoint -::::::- Send. session=[id=dd1d138d-a640-4f4f-bd4d-169d0cf5d937,client=~ise-fanout-ise33,server=wss://ise33.lab.local:8910/pxgrid/ise/pubsub] frame=[command=SEND,headers=[content-length=513, destination=/topic/distributed, from=~ise-fanout-ise33, via=~ise-fanout-ise33],content-len=513] content=MESSAGE

使用封包擷取可以看出失敗的原因，

解決方案

1.確保Web裝置簽名證書在WSA上成功繫結且已提交更改。

2.確保WSA客戶端證書的頒發者或根CA證書是思科ISE上的受信任儲存的一部分。

已知瑕疵

思科錯誤 ID

說明

思科錯誤ID 23986

Pxgrid getUserGroups API請求返回空響應。

思科錯誤ID 77321

WSA從ISE接收SID而不是AD組。