目录

简介

先决条件

使用的组件

配置

A 部分：安全网络分析(Stealthwatch)证书配置

第1部分 — 为安全网络分析pxGrid客户端证书生成CSR

第II部分 — 使用外部CA创建安全网络分析pxGrid客户端证书

第III部分 — 将安全网络分析pxGrid客户端证书添加到管理器

第IV部分 — 将CA根证书导入到Manager信任库中

B 部分：思科身份服务引擎3.3证书配置

第I部分 — 生成ISE服务器pxGrid证书

第II部分 — 使用外部CA创建ISE服务器pxGrid证书

第III部分 — 将CA根证书导入ISE信任存储

第4部分 — 将ISE证书绑定到证书签名请求(CSR)

集成

验证

故障排除

DNS解析问题

解决方案

未知CA错误或缺少受信任证书

解决方案

已知缺陷

简介

本文档介绍使用pxGrid连接将ISE 3.3与安全网络分析(Stealthwatch)集成的过程。

先决条件

思科建议了解以下主题：

- 身份服务引擎

- 平台交换网格(pxGrid)

- 安全网络分析(Stealthwatch)

- TLS/SSL证书。

- Windows Server 2016上的PKI

使用的组件

本文档中的信息基于以下软件和硬件版本：

- 身份服务引擎(ISE)版本3.3补丁4

- 安全网络分析(Stealthwatch)7.5.1

- Windows server 2016作为外部证书颁发机构(CA)服务器。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

配置

A 部分：安全网络分析(Stealthwatch)证书配置

第1部分 — 为安全网络分析pxGrid客户端证书生成CSR

1.登录到Stealthwatch管理控制台(SMC)。

2.从主菜单中选择配置>全局>集中管理。

3.在“资产”页面上，点击要连接到ISE的Manager的（省略号）图标。

4.选择编辑设备配置。

5.导航至设备选项卡下的其他SSL/TLS客户端身份部分。

6.单击Add New。

7.是否需要生成CSR（证书签名请求）？选择 Yes。单击 Next。

8.选择RSA密钥长度，并填写“生成CSR”部分中的其余字段。

9.单击生成CSR。生成过程可能需要几分钟时间。

10.单击下载CSR并在本地保存CSR文件。

第II部分 — 使用外部CA创建安全网络分析pxGrid客户端证书

1.导航到MS Active Directory证书服务,https://server/certsrv/，其中服务器是MS服务器的IP或DNS。

2.单击Request a certificate。

3.选择提交高级证书请求。

4.将上一节中生成的CSR文件的内容复制到Saved Request字段中。

5.选择pxGrid作为证书模板，然后单击提交。

注意：使用的证书模板pxGrid需要在“Enhanced Key Usage”字段中同时进行客户端身份验证和服务器身份验证。

6.以Base-64格式下载生成的证书,然后将其另存为pxGrid_client.cer。

第III部分 — 将安全网络分析pxGrid客户端证书添加到管理器

1.导航至Central Management中Manager配置的其他SSL/TLS客户端身份部分。

2. Additional SSL/TLS Client Identities部分包含用于导入创建的客户端证书的表单。

3.为证书提供一个友好的名称，然后单击选择文件以查找证书文件。

1. 在Chain Certificate file部分下，选择根或颁发者CA .cer文件或证书链文件(.pem / .cer / .crt)。

5.单击Add Client Identity将证书添加到系统。

6.单击Apply Settings保存更改。

第IV部分 — 将CA根证书导入到Manager信任库中

1.导航至MS Active Directory证书服务主页，然后选择下载CA证书、证书链或CRL。

2.选择Base-64格式，然后单击下载CA证书。

3.将证书保存为CA_Root.cer。

4.登录Stealthwatch管理控制台(SMC)。

5.从主菜单中选择配置>全局>集中管理。

6.在“资产”页面，点击经理的(省略号)图标。

7.选择Edit Appliance Configuration。

8.选择General选项卡。

9.导航至Trust Store部分并导入以前导出的CA_Root.cer证书。

10.单击Add New。

11.为证书提供一个友好名称，然后点击选择文件……以选择先前导出的ISE CA证书。

12.单击Add Certificate保存更改。

13.单击Apply Settings保存更改。

B 部分：思科身份服务引擎3.3证书配置

第I部分 — 生成ISE服务器pxGrid证书

为ISE服务器pxGrid证书生成CSR:

1.登录思科身份服务引擎(ISE)GUI。

2.导航至管理>系统>证书>证书管理>证书签名请求。

3.选择生成证书签名请求(CSR)。

4.在“证书用于”字段中选择pxGrid。

5.选择生成证书的ISE节点。

6.根据需要填写其他证书详细信息。

7.单击生成。

8.单击导出并在本地保存文件。

第II部分 — 使用外部CA创建ISE服务器pxGrid证书

1.导航至MS Active Directory证书服务https://server/certsrv/，其中服务器是MS服务器的IP或DNS。

2.单击Request a certificate。

3.选择提交高级证书请求。

4.将上一节中生成的CSR的内容复制到Saved Request字段中。

5.选择pxGrid作为证书模板，然后单击提交。

注意：使用的证书模板pxGrid需要在“Enhanced Key Usage”字段中同时进行客户端身份验证和服务器身份验证。

6.以Base-64格式下载生成的证书，并将其另存为ISE_pxGrid.cer。

第III部分 — 将CA根证书导入ISE信任存储

1.导航到MS Active Directory证书服务主页，然后选择下载CA证书、证书链或CRL。

2.选择Base-64格式，然后单击下载CA证书。

3.将证书另存为CA_Root.cer。

4.登录思科身份服务引擎(ISE)GUI。

5.选择管理>系统>证书>证书管理>受信任证书。

6.选择Import > Certificate file和Import根证书。

7.确保选中Trust for authentication within ISE复选框。

8.单击提交。

第4部分 — 将ISE证书绑定到证书签名请求(CSR)

1.登录思科身份服务引擎(ISE)GUI。

2.选择管理>系统>证书>证书管理>证书签名请求。

3.选择上一节中生成的CSR，然后单击绑定证书。

4.在“绑定CA签名证书”表单上，选择以前生成的ISE_pxGrid.cer证书。

5.为证书提供一个友好名称，然后单击Submit。

7.如果系统要求替换证书，请单击Yes。

8.选择Administration > System > Certificates > System Certificates。

9.您可以在列表中看到由外部CA签名的已创建pxGrid证书。

现在已部署证书，继续集成。

集成

在继续集成之前，请确保：

对于Cisco ISE，在Administration > pxGrid Services > Settings和Check Automatically approve new certificate-based accounts for Client request to Auto-approve and Save下。

在Stealthwatch管理控制台(SMC)上，打开ISE配置设置页面：

1.选择Configure > Integrations > Cisco ISE。

2.在页面右上角，点击添加新配置。

3.输入集群名称，选择certificate & Integration Product,pxGrid节点IP，然后单击Save。

验证

刷新Stealthwatch管理控制台(SMC)上的ISE配置页面。

1.返回Web应用中的ISE配置页面并刷新页面。

2. 确认位于适用的“IP地址”字段旁边的节点状态指示符为绿色，表示已建立到ISE或ISE-PIC群集的连接。

在Cisco ISE上，导航到管理>pxGrid服务>客户端管理>客户端。

这会将SMC生成为pxgrid客户端，状态为Enabled。

要验证思科ISE上的主题订用，请导航到管理>pxGrid服务>诊断> Websocket >主题

这会生成订用这些主题的SMC。

Trustsec SGT主题

ISE会话目录主题

ISE SXP绑定主题

跟踪级别的Cisco ISE Pxgrid-server.log。

2025-02-08 18:07:11,086 TRACE  [pxgrid-http-pool15][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::16d51630eee14e99b25c0fb4988db515:- Drop. exclude=[id=6,client=~ise-fanout-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub]

2025-02-08 18:07:11,087 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -:::::::- Received frame=[command=CONNECT,headers=[accept-version=1.1,1.2, heart-beat=0,0]], content=null

2025-02-08 18:07:11,102 TRACE  [pxgrid-http-pool19][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -:::::::- Received frame=[command=SUBSCRIBE,headers=[destination=/topic/com.cisco.ise.config.trustsec.security.group, id=0]], content=null

2025-02-08 18:07:11,110 DEBUG  [pxgrid-http-pool22][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -:::::::- Authenticating null

2025-02-08 18:07:11,111 DEBUG  [pxgrid-http-pool22][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -:::::::- Certs up to date. user=~ise-pubsub-avasteise271

2025-02-08 18:07:11,111 DEBUG  [pxgrid-http-pool22][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -:::::::- preAuthenticatedPrincipal = ~ise-pubsub-avasteise271, trying to authenticate

2025-02-08 18:07:11,111 DEBUG  [pxgrid-http-pool22][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -:::::::- X.509 client authentication certificate subject:CN=avasteise271.avaste.local, OU=AAA, O=Ciscco, L=Bangalore, ST=KA, C=IN, issuer:CN=Avaste-ISE, DC=avaste, DC=local

2025-02-08 18:07:11,111 DEBUG  [pxgrid-http-pool22][[]] cisco.cpm.pxgridwebapp.config.MyX509Filter -:::::::- Authentication success: PreAuthenticatedAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=~ise-pubsub-avasteise271, 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]]

2025-02-08 18:07:11,112 DEBUG  [pxgrid-http-pool22][[]] cisco.cpm.pxgridwebapp.data.AuthzDaoImpl -:::::::- requestNodeName=SMC serviceName=com.cisco.ise.pubsub operation=subscribe /topic/com.cisco.ise.config.trustsec.security.group

2025-02-08 18:07:11,321 DEBUG  [pxgrid-http-pool19][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -:::::::- Adding subscription=[id=0,topic=/topic/com.cisco.ise.config.trustsec.security.group,filter=

]

2025-02-08 18:07:11,322 DEBUG  [pxgrid-http-pool20][[]] cisco.cpm.pxgridwebapp.config.AuthzEvaluator -:::::::- Permitted user=SMC service=com.cisco.ise.config.trustsec operation=gets

2025-02-08 18:07:11,322 INFO   [pxgrid-http-pool19][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -:::::::- Pubsub subscribe. subscription=[id=0,topic=/topic/com.cisco.ise.config.trustsec.security.group,filter=

] session=[id=8,client=SMC,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub]

2025-02-08 18:07:11,323 TRACE  [pxgrid-http-pool19][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -:::::::- Received frame=[command=SUBSCRIBE,headers=[destination=/topic/com.cisco.ise.session, id=1]], content=null

2025-02-08 18:07:11,323 TRACE  [WsIseClientConnection-1010][[]] cpm.pxgrid.ws.client.WsEndpoint -::::::0a3f23311137425aa726884769e2629c:- Send. session=[id=e7b912e0-ef20-405f-a4ae-a973712d2ac5,client=~ise-admin-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub] frame=[command=SEND,headers=[content-length=438, trace-id=0a3f23311137425aa726884769e2629c, destination=/topic/com.cisco.ise.pxgrid.admin.log],content-len=438] content={"timestamp":1739018231322,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"avasteise271","client":"SMC","server":"wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003d0,topic\u003d/topic/com.cisco.ise.config.trustsec.security.group,filter\u003d\u003cnull\u003e] session\u003d[id\u003d8,client\u003dSMC,server\u003dwss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub]"}

2025-02-08 18:07:11,323 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::0a3f23311137425aa726884769e2629c:- Received frame=[command=SEND,headers=[content-length=438, trace-id=0a3f23311137425aa726884769e2629c, destination=/topic/com.cisco.ise.pxgrid.admin.log],content-len=438], content={"timestamp":1739018231322,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"avasteise271","client":"SMC","server":"wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003d0,topic\u003d/topic/com.cisco.ise.config.trustsec.security.group,filter\u003d\u003cnull\u003e] session\u003d[id\u003d8,client\u003dSMC,server\u003dwss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub]"}

2025-02-08 18:07:11,323 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::0a3f23311137425aa726884769e2629c:- Set last activity time for session=[id=7,client=~ise-admin-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub] from StompPubsubEndpoint, last activity time set to 1739018231323

2025-02-08 18:07:11,324 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.StompPubsubEndpoint -::::::0a3f23311137425aa726884769e2629c:- Authorized to send (cached). session=[id=7,client=~ise-admin-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub] topic=/topic/com.cisco.ise.pxgrid.admin.log

2025-02-08 18:07:11,324 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::0a3f23311137425aa726884769e2629c:- Distribute from=[id=7,client=~ise-admin-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub] topic=/topic/com.cisco.ise.pxgrid.admin.log content={"timestamp":1739018231322,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"avasteise271","client":"SMC","server":"wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003d0,topic\u003d/topic/com.cisco.ise.config.trustsec.security.group,filter\u003d\u003cnull\u003e] session\u003d[id\u003d8,client\u003dSMC,server\u003dwss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub]"}

2025-02-08 18:07:11,324 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::0a3f23311137425aa726884769e2629c:- Distribute distributed. subscription=[id=0,topic=/topic/com.cisco.ise.pxgrid.admin.log,filter=

]

2025-02-08 18:07:11,324 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::0a3f23311137425aa726884769e2629c:- Set last activity time for session=[id=7,client=~ise-admin-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub] from SubscriptionDistributor, last acitivity time set to 1739018231324

2025-02-08 18:07:11,324 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::0a3f23311137425aa726884769e2629c:- Distribute distributed. subscription=[id=2,topic=/topic/wildcard,filter=

]

2025-02-08 18:07:11,324 TRACE  [pxgrid-http-pool22][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionDistributor -::::::0a3f23311137425aa726884769e2629c:- Set last activity time for session=[id=0,client=~ise-fanout-avasteise271,server=wss://localhost:8910/pxgrid/ise/pubsub] from SubscriptionDistributor, last acitivity time set to 1739018231324

2025-02-08 18:07:11,324 TRACE  [sub-sender-0][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionSender -::::::0a3f23311137425aa726884769e2629c:- Send. subscription=[id=2,topic=/topic/wildcard,filter=

] from=[id=7,client=~ise-admin-avasteise271,server=wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub] to=[id=0,client=~ise-fanout-avasteise271,server=wss://localhost:8910/pxgrid/ise/pubsub] message=[command=MESSAGE,headers=[content-length=438, trace-id=0a3f23311137425aa726884769e2629c, destination=/topic/com.cisco.ise.pxgrid.admin.log, message-id=161972],content-len=438]

2025-02-08 18:07:11,324 TRACE  [sub-sender-0][[]] cpm.pxgridwebapp.ws.pubsub.SubscriptionSender -::::::0a3f23311137425aa726884769e2629c:- Complete stompframe published : {"timestamp":1739018231322,"level":"INFO","type":"PUBSUB_SERVER_SUBSCRIBE","host":"avasteise271","client":"SMC","server":"wss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub","message":"Pubsub subscribe. subscription\u003d[id\u003d0,topic\u003d/topic/com.cisco.ise.config.trustsec.security.group,filter\u003d\u003cnull\u003e] session\u003d[id\u003d8,client\u003dSMC,server\u003dwss://avasteise271.avaste.local:8910/pxgrid/ise/pubsub]"}

故障排除

DNS解析问题

这会产生错误消息“Connection Status;未能连接到服务。服务网络地址：https:isehostnameme.domain.com:891pxgridiisessxpxp cannot be resolved”：

解决方案

在理想情况下，需要在DNS服务器上修复，以针对此ISE FQDN执行正向和反向查找。但是，可以添加一个临时解决方法来解决本地问题：

1.登录到Stealthwatch管理控制台(SMC)。

2.从主菜单中选择配置>全局>集中管理。

3.在“资产”页上，单击管理器的(省略号)图标。

4.选择编辑设备配置。

5. Network Services选项卡并为此ISE FQDN添加本地解析条目。

未知CA错误或缺少受信任证书

这会产生错误消息，因为“ISE提供不受此管理器信任的证书”：

类似的日志引用可以看到oSMCMsvcvisese-client.log文件。路径：catlancopepe/var/logs/containesvcvisese-client.log

snasmc1 docker/svc-ise-client[1453]: java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: org.bouncycastle.tls.TlsFatalAlert: certificate_unknown(46)

snasmc1 docker/svc-ise-client[1453]: at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)

snasmc1 docker/svc-ise-client[1453]: at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2022)

snasmc1 docker/svc-ise-client[1453]: at org.springframework.web.socket.client.jetty.JettyWebSocketClient.lambda$doHandshakeInternal$0(JettyWebSocketClient.java:186)

snasmc1 docker/svc-ise-client[1453]: at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

snasmc1 docker/svc-ise-client[1453]: at java.base/java.lang.Thread.run(Thread.java:829)

snasmc1 docker/svc-ise-client[1453]: Caused by: javax.net.ssl.SSLException: org.bouncycastle.tls.TlsFatalAlert: certificate_unknown(46)

snasmc1 docker/svc-ise-client[1453]: at org.bouncycastle.jsse.provider.ProvSSLEngine.unwrap(ProvSSLEngine.java:505)

snasmc1 docker/svc-ise-client[1453]: at java.base/javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:637)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.ssl.SslConnection.unwrap(SslConnection.java:398)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:721)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:180)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:91)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:91)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:194)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:558)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:379)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:146)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:936)

snasmc1 docker/svc-ise-client[1453]: at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1080)

snasmc1 docker/svc-ise-client[1453]: ... 1 more

snasmc1 docker/svc-ise-client[1453]: Suppressed: javax.net.ssl.SSLHandshakeException: org.bouncycastle.tls.TlsFatalAlert: certificate_unknown(46)

解决方案

1.登录到Stealthwatch管理控制台(SMC)。

2.从主菜单中选择配置>全局>集中管理。

3.在“资产”页上，单击“经理”的(省略号)图标。

4.选择编辑设备配置。

5.选择General选项卡。

6.导航到Trust Store部分，并确保Cisco ISE的Pxgridid证书的颁发者是信任存储的一部分。

已知缺陷

Bug ID

描述

思科漏洞ID 18119

ISE选择不支持的密码ITLS服务器Hello数据包

思科漏洞ID 01634

无法使用EPS条件隔离设备