【问题标题】:mTLS validation and ngrokmTLS 验证和 ngrok
【发布时间】:2021-12-07 16:42:41
【问题描述】:

我正在开发一种付款方式与 Shopify 的集成,它要求我使用 mTLS 验证他们(作为客户端)的请求。

支付应用必须实施 mTLS 以处理它们充当服务器和 Shopify 作为客户端的所有请求。当 Shopify 启动与支付应用程序的会话时就是这种情况。在这些情况下,Shopify 使用自己的客户端证书。支付应用程序必须使用下面提供的自签名 CA 来验证该证书。在这些场景中使用 mTLS 允许支付应用验证发起请求的客户端是 Shopify,并且 Shopify 和支付应用之间的流量是可信且安全的。

我曾在与 Shopify 的许多其他集成中使用 ngrok 隧道,但由于它们不是支付应用程序,Shopify 不需要 mTLS,因此我使用隧道没有问题。

现在我在服务器中进行客户端证书验证:

 https
  .createServer(
    {
      requestCert: true,
      rejectUnauthorized: true,
      ca: fs.readFileSync(path.join(__dirname, 'security', 'ca.pem')),
    },
    app
  )
  .listen(APP_PORT, () => console.log(`Server listening at: ${APP_URL}`));

“ca”指向 Shopify 在文档中给我的证书:

当我尝试访问我的 ngrok 网址时,我收到以下消息:

ngrok 网关错误

服务器返回无效或不完整的 HTTP 响应。

ERR_NGROK_3004

查看 ngrok documentation,我发现可以使用 TLS 隧道。

第一个问题是:如果我使用 TLS 隧道,就不会再出现这个错误了吗?

另一方面,Shopify 还要求:

支付应用还需要提供 Shopify 将验证的证书。对于此证书,您需要使用受信任的 CA 签名 SSL 证书,而不是 Shopify 的自签名 CA。

第二个问题是:当我将应用程序放在具有 HTTPS 证书 URL 的服务器中时,我明白我会满足这个要求。但我想知道我在本地开发应用程序时是否可以使用生成的证书,例如openSSL

我请求您的帮助并且不尝试使用 mTLS 隧道的原因是您需要一个 ngrok 付费帐户才能访问我没有的那种类型的隧道。

非常感谢。


我正在使用 Node + Express 作为服务器。

Shopify 文档:https://shopify.dev/apps/payments/general-transaction-requirements

【问题讨论】:

  • 您能否使 mTLS 与 ngrok 一起工作?如果没有,您是否找到了本地开发的解决方法?
  • 我也很想知道你是否设法解决了这个问题
  • 你能成功吗?

标签: javascript express ssl mtls


【解决方案1】:

我最终向 ngrok 支持发送了以下电子邮件:

您好,我的名字是 Juan,我想知道您是否可以帮助我 带有以下内容:

我正在开发一种付款方式与 Shopify 的集成 要求我使用 mTLS 验证他们的请求。

我曾在与 Shopify 的许多其他集成中使用过 ngrok 隧道,但 不需要这个特定的验证,我没有问题 他们。

现在我在服务器中进行客户端证书验证,当 我尝试访问我的 ngrok url 我收到此消息:ngrok 网关错误 服务器返回了无效或不完整的 HTTP 响应。

ERR_NGROK_3004

查看 ngrok 文档我发现可以使用 特殊的 TLS 隧道。

问题是:如果我使用 TLS 隧道,我不会再收到该错误了吗? 我写信给你是因为如果它确实解决了问题,我会问我的 公司升级我的计划,以便我可以访问 TLS 隧道。但 我想在询问之前确定它会解决问题。

非常感谢。

他们回复了以下电子邮件:

你好胡安,

我们在边缘支持 HTTP 隧道的 mTLS。你会创建一个 双向 TLS 类型的端点配置并将其附加到您的 域。

https://dashboard.ngrok.com/endpoints/configs

我们还支持在代理或您的服务器上为我们的 TLS 使用 mTLS 正如你所说的隧道,但这可能设置起来更复杂。

如果它不起作用,我们提供 15 天退款保证。

由于我无法支付帐户费用和访问这些功能,我最终在舞台服务器上开发了应用程序,我没有遇到任何问题。我希望这对你有帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2018-01-09
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2020-06-02
    相关资源
    最近更新 更多