You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS作为客户端连接SoapUi出现Handshake Failure (40)故障如何配置?

核心配置检查项

1. 授予IIS应用池运行身份客户端证书私钥读取权限

这是该场景下最高发的问题:即使证书已经存入LocalMachine存储,IIS应用池的默认运行身份(如ApplicationPoolIdentity、NETWORK SERVICE)没有该证书的私钥读取权限,会导致程序加载到证书但无法调用私钥完成客户端身份签名,直接终止握手。
操作步骤:

  • 按下Win+R输入certlm.msc打开本地计算机证书管理器
  • 找到你部署的客户端证书,右键选择「所有任务」-「管理私钥」
  • 点击「添加」,输入你站点对应的应用池名称,格式为IIS AppPool\你的应用池名,点击检查名称确认无误后添加
  • 给该身份仅授予「读取」权限,保存即可

2. 校验证书的增强密钥用法(EKU)合规性

Windows的SSL/TLS栈默认会校验证书用途:

  • IIS端使用的客户端证书必须包含客户端身份验证的增强密钥用法(OID:1.3.6.1.5.5.7.3.2)
  • SoapUI端的服务端证书必须包含服务器身份验证的增强密钥用法(OID:1.3.6.1.5.5.7.3.1)
    如果证书缺失对应EKU,即使CA相同也会被Windows拒绝用于握手。

3. 检查托管代码的TLS配置与证书校验规则

如果你的应用是.NET Framework/.NET Core开发,需要确认以下配置:

  • 确保代码中指定的TLS协议版本与SoapUI端一致,建议统一指定为TLS1.2及以上,示例配置:
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    
  • 如果是测试环境没有配置CRL吊销服务,需要关闭证书吊销校验,可在web.config中添加配置:
    <system.net>
      <settings>
        <servicePointManager checkCertificateRevocationList="false" />
      </settings>
    </system.net>
    
  • 若证书的CN与访问的域名/主机名不匹配,可按需临时关闭证书名称校验(仅测试环境使用,生产环境不建议)。

4. 确认CA证书部署位置正确

必须确保签发证书的根CA证书、中间CA证书都存入本地计算机的「受信任的根证书颁发机构」存储,不要存入当前用户的存储路径,否则IIS应用池身份无法读取到根CA证书,会判定服务端证书不可信。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:57:04