在契约提供者测试中指定自签名证书

问题描述 投票:0回答:2

我目前正在使用以下提供商选项来测试我的契约合同

let opts = {
            provider: "api",
            providerBaseUrl: "https://my-domain.com",
            pactUrls: [
                path.resolve(
                    process.cwd(),
                    "./pacts/pact-api.json"
                ),
            ],
            validateSSL: false,
            changeOrigin: true,
            providerVersion: "1.0.0"
        }
        return new Verifier(opts).verifyProvider().then(output => {
            console.log("Pact Verification Complete!")
            console.log(output)
        })

当我将基本URL设为https时,出现以下错误:

Uncaught Error: write EPROTO 140574248376192:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:

      at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:92:16)

如果将URL更改为http:,它将进行重定向(我获得重定向状态代码308。)>

https url是一个自签名的url,并且自签名的证书存在于我们所有的服务器中。我没有从任何浏览器或curl或通过express.js访问url的问题。

但是如果我直接在提供程序选项中提供url,则会收到错误消息。我浏览了公约文档,但找不到其他参数。

非常感谢您为解决此问题提供的任何帮助。

谢谢。

我目前正在使用以下提供程序选项来测试我的契约合同,让opts = {provider:“ api”,providerBaseUrl:“ https://my-domain.com”,pactUrls:[...

node.js datacontract pact pact-node
2个回答
0
投票

幕后,pact-js使用“ pact-ruby-standalone”。您可以使用此处记录的环境变量SSL_CERT_FILE为pact-ruby-standalone设置证书:https://github.com/pact-foundation/pact-ruby-standalone/releases#pact-provider-verifier


0
投票

虽然Beth是正确的,因为我们确实在后台使用了Ruby库,但是Pact JS实际上启动了一个与Ruby独立版本实际交互的代理-即Ruby与运行http的本地JS服务器对话,并且该代理重新发出对服务的请求。因此,问题很可能出现在Pact JS框架中。

© www.soinside.com 2019 - 2024. All rights reserved.