You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Azure Service Fabric证书交换后应用无法激活求助

解决Azure Service Fabric证书更新后的应用激活与旧证书删除问题

我来帮你一步步拆解并解决这两个棘手的问题:

一、应用无法激活:端口绑定旧证书指纹

你遇到的报错There is already a certificate with thumbprint 123oldCertNumber bound to port 200appPort,核心原因是服务端口的SSL绑定还和旧证书关联着——哪怕集群已经切换到新证书,应用的端口绑定没同步更新就会触发这个问题。

可以按以下步骤排查修复:

  • 首先检查应用的ServiceManifest.xml:找到对应端口的<Endpoint>配置,看看是否显式指定了CertificateThumbprint="123oldCertNumber",如果有,直接改成新证书指纹321newCertNumber,重新打包部署。
  • 用命令行检查并修复节点上的SSL端口绑定:
    1. 登录到任意集群节点(通过Azure门户远程桌面或SSH),执行命令确认当前绑定:
      netsh http show sslcert ipport=0.0.0.0:200appPort
      
      查看输出里的Certificate Hash是否为旧证书指纹。
    2. 如果确实是旧绑定,先删除它:
      netsh http delete sslcert ipport=0.0.0.0:200appPort
      
    3. 再绑定新证书,appid可以从旧绑定的输出里复制,或者使用应用的GUID:
      netsh http add sslcert ipport=0.0.0.0:200appPort certhash=321newCertNumber appid={你的应用GUID}
      
  • 完成后重启应用实例,或重新部署一次,确保所有节点同步新的绑定配置。

二、删除旧证书时集群更新卡住失败

删除次要位置的旧证书时出现长时间Cluster is updating user certificate.最终失败,大概率是旧证书还被集群或某个应用依赖着,导致删除操作被阻塞。可以这么处理:

  • 先确认集群证书更新是否完全完成:打开Service Fabric Explorer,查看每个节点的Node > Certificates,确保所有节点都已加载新的主证书,旧证书仅作为次要证书存在,没有节点还在使用它。
  • 排查所有应用的配置:检查所有部署的应用(包括系统应用)的ApplicationManifest.xmlServiceManifest.xml,确保没有任何地方还引用旧证书指纹123oldCertNumber,如果有,先更新这些应用并重新部署。
  • 尝试用PowerShell强制移除证书:打开Service Fabric PowerShell模块(确保已连接到集群),执行命令:
    Remove-ServiceFabricClusterCertificate -Thumbprint 123oldCertNumber -Force
    
    执行前务必确认没有任何服务还依赖旧证书,否则可能导致集群故障。
  • 查看集群日志排查卡住原因:如果还是失败,打开节点的Event Viewer,查看Applications and Services Logs > Microsoft > Service Fabric下的Admin和Operational日志,找到具体错误信息(比如某个节点无法响应、权限不足、密钥保管库访问问题等),针对性解决。
  • 检查密钥保管库权限:确保执行删除操作的账号拥有密钥保管库的Certificate OfficerOwner权限,否则可能无法完成证书的集群同步操作。

补充注意事项

  • 新证书的Subject或SAN必须和旧证书一致,否则可能导致集群内部通信失败;
  • 更新证书后,建议分批重启所有集群节点(避免集群不可用),确保节点完全加载新证书配置。

内容的提问来源于stack exchange,提问作者madeFromCode

火山引擎 最新活动