1

我对 Bluemix Secure Gateway 的基础知识很满意,但我看不出有什么好的方法来设置肯定是常见的场景。

我的要求是:

  • 现有的内部服务是通过 TLS 提供的,并且必须保持这种状态。它不检查客户端证书,它只是一个传统的 https:// ReST API。
  • Secure Gateway 管道的外部端必须检查客户端证书,以仅允许某些已知客户端连接。

第二点是通过在 Secure Gateway UI 中设置目标时选择 TLS Mutual Auth 选项来实现的。但是,这会创建从客户端应用程序(此时实际上只是一个浏览器)到 Secure Gateway 管道内部端的 TLS 连接。从该管道的末端向内部服务输出的是明文的 HTTP。内部服务正确地拒绝了这一点,因为它期待 HTTPS。

我可以通过配置不带 TLS 的安全网关来建立有效连接,然后我从客户端浏览器一直到内部服务器获得 TLS 连接,但这里的问题是 Bluemix 管道对任何人都开放Internet 向内部服务器扔东西,虽然我们都知道“受信任的内部网络”应该是一个神话,但事实是这个东西从未设置为面向 Internet。我想在 Bluemix 管道的外端阻止除我的已知客户之外的任何人。

我认为我需要的是一种在 docker 映像中运行的管道内部端与内部服务器启动第二个 TLS 会话的方法。似乎是一个明显必要的功能,但我在文档中找不到任何参考。还是我错过了其他方式?

4

2 回答 2

1

自发布此消息以来,我已经与其中一位 Bluemix 开发人员取得了联系(我是一名 IBM 员工 - 可能并非所有人都可以使用此选项 :-))。答案是目前不支持,但很快就会支持。

我敢说有办法将 openssl s_client 或类似的东西挂接到流中,但支持的版本足够接近,对我来说不值得复杂。

于 2015-05-14T15:34:34.790 回答
1

皮特的回答是正确的,但由于它被否决,我将重申并添加一些信息。

目前您无法连接到 TLS 后端,除非您按照建议使用 No TLS 选项。很快,您将能够使用您所描述的设置来完成此操作,即配置了 TLS 的目的地:从客户端到最终目的地的相互身份验证和 TLS。

如果你现在真的想完成这个,你可以在客户端设置一个隧道来将 TCP 连接转换为 TLS 连接。如何在 node.js 中设置这样的隧道的示例在下面链接的教程中,但您将在客户端创建此隧道。使用隧道的主机/端口创建目标,然后让隧道连接到您的 REST API。

https://developer.ibm.com/bluemix/2015/04/17/securing-destinations-tls-bluemix-secure-gateway/

编辑:现在已添加客户端 TLS。可在此处找到此功能的文档: https ://www.ng.bluemix.net/docs/services/SecureGateway/index-gentopic3.html#sg_011

于 2015-05-19T03:34:31.563 回答