Bluemix Secure Gateway - 使用HTTPS的内部服务和外部的TLS相互身份验证?

时间:2015-05-14 15:06:39

标签: ibm-cloud secure-gateway

我对Bluemix Secure Gateway的基础知识感到满意,但我看不出设置必须是常见场景的好方法。

我的要求是:

  • 现有的内部服务是通过TLS提供的,必须保持不变。它不会检查客户端证书,它只是一个传统的https:// ReST API。
  • 安全网关管道的外部端必须检查客户端证书,以仅允许某些已知客户端连接。

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

我可以通过配置没有TLS的Secure Gateway来建立工作连接,然后我从客户端浏览器一直到内部服务器获得TLS连接,但问题是Bluemix管道是敞开式的互联网上任何人都可以把东西扔到内部服务器上,尽管我们都知道“可信赖的内部网络”应该是一个神话,但事实是这件事从未被设置为面向互联网。我想在Bluemix管道的外端阻止除了我已知客户端之外的任何人。

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

2 个答案:

答案 0 :(得分:1)

自发布此消息以来,我已与其中一位Bluemix开发人员取得联系(我是IBM员工 - 这个选项可能并不适用于所有人:-))。答案是它目前不受支持,但将是Real Soon Now。

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

答案 1 :(得分:1)

Pete的回答是正确的,但由于投票结果不合理,我会重申并添加一些信息。

目前,除非您按照建议使用No TLS选项,否则无法连接到TLS后端。很快,您将能够通过您正在描述的设置,从客户端到最终目的地的TLS:Mutual Auth和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