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

pact-net中禁用Pact Broker SSL验证无效,求正确实现方案

Pact-Net 禁用Pact Broker SSL验证失效问题解决

失效原因

你调用的.WithSslVerificationDisabled()方法仅作用于待验证的服务提供者(Provider)本身(也就是你的CampaignFinder API),它并不会禁用Pact Broker的SSL证书验证。这是两个完全独立的配置项,所以即使调用了这个方法,连接自签名证书的Pact Broker时依然会触发BadCertificate错误。

正确解决方法

针对Pact-Net v4.5.x

需要在配置PactBrokerSource时,通过PactBrokerOptions单独禁用Broker的SSL验证:

using var verifier = new PactVerifier();
verifier.ServiceProvider("CampaignFinder API", new Uri(PactServiceUri))
    .WithPactBrokerSource(new Uri("https://pact-broker-pact.apps.ocpdoa.akbank.com"), 
        options => options.SslVerificationEnabled = false) // 禁用Broker的SSL验证
    .WithSslVerificationDisabled() // 禁用Provider服务的SSL验证(如果需要)
    .WithProviderStateUrl(new Uri($"{PactServiceUri}/provider-states"))
    .Verify();

针对Pact-Net v5.0 Beta

v5版本API有所调整,需要在WithPactBroker的配置中调用DisableSslVerification():

var verifier = new PactVerifierBuilder()
    .ServiceProvider("CampaignFinder API", new Uri(PactServiceUri))
    .WithPactBroker(new Uri("https://pact-broker-pact.apps.ocpdoa.akbank.com"), 
        config => config.DisableSslVerification()) // 禁用Broker的SSL验证
    .WithProviderStateUrl(new Uri($"{PactServiceUri}/provider-states"))
    .Build();

await verifier.VerifyAsync();

CI/CD环境通用方案(推荐)

在CI/CD环境中,直接设置环境变量更便捷,无需修改代码:

  • 设置环境变量 PACT_BROKER_SSL_VERIFICATION=false

这个环境变量会全局禁用Pact Broker的SSL证书验证,适用于所有pact-net版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:19:54