如何在 CloudFoundry 环境中创建安全的内部路由(Swisscom AppCloud)
How to create a secure internal route in the CloudFoundry environment (Swisscom AppCloud)
我想在同一个 space/organization 中的两个应用程序之间创建一个安全的 内部 路由。永远不可能从外部访问 Node.js 应用程序。我的 Java 应用程序通过 HTTP 连接到 Node 应用程序(运行 on express)。
我现在尝试通过创建一个名为 example-route.apps.internal
的路由来设置所需的配置,并将其分配给节点应用程序。作为下一步,我在 Java 应用程序的网络配置中打开了端口(我试过 443
、80
、8080
)(带有目的地作为节点应用程序)。我重新发布了这两个应用程序。
然后,我打开了 Java 到 link http://example-route.apps.internal/test123
的连接。我也尝试过使用 https
。结果是一样的。 Java 拒绝连接此 URL。
现在,以下问题:
- 如何正确设置此通信?我应该以某种方式解决这个内部 DNS 吗?如果我只使用环境变量的端口,哪个端口是正确的?我应该如何从其他应用程序读取此端口?
- 如果使用 HTTP 而不是 HTTPS,通信的安全性如何? (我假设 HTTPS 在内部是不可能的)。它和来自外部的 HTTPS 连接一样安全吗?中间有哪些设备,连接距离多远?
谢谢!
我想你快到了。
Then, I opened a Java connection to the link http://example-route.apps.internal/test123. I've also tried to use https. The result was the same. Java refused to conncet to this URL.
你应该使用 http://example-route.apps.internal:8080/test123
。您的应用程序设置为侦听 $PORT,在当前版本的 CF 中始终为 8080。
通常你不需要担心这个,因为你的流量通过 Gorouter 进入,它为你翻译(映射外部端口 80 -> 内部 8080)。对于内部路由,流量是直接的,因此没有转换。这就是为什么您需要在 URL.
中使用端口 8080
或者,您可以使用 Eureka 或 Consul 等服务发现机制,但这不是必需的。在这种情况下,该服务会知道它正在侦听 8080 并将其注册到注册表中。
就 HTTPS 而言,这很棘手。您的应用仅在 80/HTTP 上侦听。您必须将其更改为侦听 443/HTTPS,但随后您需要证书和不同的服务器配置。这在技术上是可行的,但它是一大堆蠕虫。
在一些较新的版本中,Envoy 存在并接受 HTTPS 流量到容器中,可以使 HTTPS 更容易,但它仍然不是灌篮(至少在撰写本文时)。我希望这在未来会变得更好。
Should I resolve this internal DNS somehow?
内部 DNS 有助于定位您的其他应用程序,而不是端口。否则,您需要管理 IP 地址,这些地址经常更改,并且需要像 Eureka 或 Consul 这样的东西。
Which port is the correct one if I just use the port of the env variable?
见上文。
How should I read this port from the other application?
目前一直是 8080,多年来一直如此。它不太可能更改,因此您可以硬编码或安全地将其设置在配置文件中。
How secure is the communication, if HTTP is used instead of HTTPS? (I assume HTTPS is not possible internally).
Is it as safe as an HTTPS connection from the outside? Which devices are between, how far out does the connection go?
流量将无法从外部访问,因为它在某些情况下不会离开 Cell,或者最坏的情况是它在两个 Cell 之间移动,但流量在内部是可见的,因为它没有加密。这意味着您需要更加信任您的 CF 提供商,他们可以访问内部流量。
如果是 HTTPS,只有拥有密钥的人才能解密。您仍然必须信任您的提供商,因为他们可能会获得密钥并使用它来解密流量。与未加密流量相比,这对他们来说只是更多的工作。
希望对您有所帮助!
我想在同一个 space/organization 中的两个应用程序之间创建一个安全的 内部 路由。永远不可能从外部访问 Node.js 应用程序。我的 Java 应用程序通过 HTTP 连接到 Node 应用程序(运行 on express)。
我现在尝试通过创建一个名为 example-route.apps.internal
的路由来设置所需的配置,并将其分配给节点应用程序。作为下一步,我在 Java 应用程序的网络配置中打开了端口(我试过 443
、80
、8080
)(带有目的地作为节点应用程序)。我重新发布了这两个应用程序。
然后,我打开了 Java 到 link http://example-route.apps.internal/test123
的连接。我也尝试过使用 https
。结果是一样的。 Java 拒绝连接此 URL。
现在,以下问题:
- 如何正确设置此通信?我应该以某种方式解决这个内部 DNS 吗?如果我只使用环境变量的端口,哪个端口是正确的?我应该如何从其他应用程序读取此端口?
- 如果使用 HTTP 而不是 HTTPS,通信的安全性如何? (我假设 HTTPS 在内部是不可能的)。它和来自外部的 HTTPS 连接一样安全吗?中间有哪些设备,连接距离多远?
谢谢!
我想你快到了。
Then, I opened a Java connection to the link http://example-route.apps.internal/test123. I've also tried to use https. The result was the same. Java refused to conncet to this URL.
你应该使用 http://example-route.apps.internal:8080/test123
。您的应用程序设置为侦听 $PORT,在当前版本的 CF 中始终为 8080。
通常你不需要担心这个,因为你的流量通过 Gorouter 进入,它为你翻译(映射外部端口 80 -> 内部 8080)。对于内部路由,流量是直接的,因此没有转换。这就是为什么您需要在 URL.
中使用端口 8080或者,您可以使用 Eureka 或 Consul 等服务发现机制,但这不是必需的。在这种情况下,该服务会知道它正在侦听 8080 并将其注册到注册表中。
就 HTTPS 而言,这很棘手。您的应用仅在 80/HTTP 上侦听。您必须将其更改为侦听 443/HTTPS,但随后您需要证书和不同的服务器配置。这在技术上是可行的,但它是一大堆蠕虫。
在一些较新的版本中,Envoy 存在并接受 HTTPS 流量到容器中,可以使 HTTPS 更容易,但它仍然不是灌篮(至少在撰写本文时)。我希望这在未来会变得更好。
Should I resolve this internal DNS somehow?
内部 DNS 有助于定位您的其他应用程序,而不是端口。否则,您需要管理 IP 地址,这些地址经常更改,并且需要像 Eureka 或 Consul 这样的东西。
Which port is the correct one if I just use the port of the env variable?
见上文。
How should I read this port from the other application?
目前一直是 8080,多年来一直如此。它不太可能更改,因此您可以硬编码或安全地将其设置在配置文件中。
How secure is the communication, if HTTP is used instead of HTTPS? (I assume HTTPS is not possible internally). Is it as safe as an HTTPS connection from the outside? Which devices are between, how far out does the connection go?
流量将无法从外部访问,因为它在某些情况下不会离开 Cell,或者最坏的情况是它在两个 Cell 之间移动,但流量在内部是可见的,因为它没有加密。这意味着您需要更加信任您的 CF 提供商,他们可以访问内部流量。
如果是 HTTPS,只有拥有密钥的人才能解密。您仍然必须信任您的提供商,因为他们可能会获得密钥并使用它来解密流量。与未加密流量相比,这对他们来说只是更多的工作。
希望对您有所帮助!