【问题标题】:Specify self signed certificate in pact provider testing在协议提供者测试中指定自签名证书
【发布时间】:2020-04-07 13:10:59
【问题描述】:

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

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)

如果我将网址更改为 http:,它会进行重定向(我得到重定向状态代码 308)。

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

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

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

谢谢。

更新: 问题是在 docker 容器内运行协议。来自容器的请求被内部代理阻止。绕过代理后,它就可以工作了。

【问题讨论】:

    标签: node.js datacontract pact pact-node


    【解决方案1】:

    在底层,pact-js 使用“pact-ruby-standalone”。您可以使用环境变量 SSL_CERT_FILE 为 pact-ruby-standalone 设置证书,如下所述:https://github.com/pact-foundation/pact-ruby-standalone/releases#pact-provider-verifier

    【讨论】:

      【解决方案2】:

      更新

      问题是由于主机上的 VPN/代理设置拦截了请求并提供了无效证书。

      原帖

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

      这里可能会发生一些事情:

      1. 图书馆某处出现问题
      2. 我们需要深入了解某个配置问题
      3. TLS 证书有一些特别之处

      您能否更新https://github.com/pact-foundation/pact-js/issues/429 的错误报告?

      我们需要日志和其他信息才能查明真相(请参阅 https://github.com/pact-foundation/pact-js/blob/master/.github/issue_template.md 了解如何帮助我们帮助您)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2021-03-01
        • 2023-01-25
        • 2018-01-20
        • 2020-06-07
        • 1970-01-01
        相关资源
        最近更新 更多