使用 Apple (Netty) 的 ServiceTalk 作为 RESTful API 与 Jersey 并让我们加密 HTTPS

Using ServiceTalk from Apple (Netty) as a RESTful API with Jersey and Let's Encrypt HTTPS

所以基本上,我使用 Apple(Netty 实现)和 Jersey 的 ServiceTalk 制作了一个 RESTful API 并且它可以工作。虽然只能通过 http。我已经看到,当我让我的 React 网页通过 http 发出 POST 请求时,它会抱怨 CORS(我仍在尝试修复)并且浏览器(至少 Brave)不允许要发出的请求,因为它是 http,而我的网页是 运行ning 在 https 上,使用让我们加密证书。我该如何解决这个问题?我需要为 Netty 添加 SSL 吗?如果是这样,我如何使用每隔一段时间就会更改的证书来做到这一点?

我还使用 Let's Encrypt 设置了 NGINX,并从 NGINX + Let's Encrypt 的设置向导中启用了自动续订证书设置。如果我能以某种方式使 NGINX 运行 HTTPS 请求作为 http 上 netty 服务器的代理,那么我认为这也是一个更好的解决方案。我知道这是 NodeJS Express + NGINX 的常见做法。

你是对的,如果你已经有 NGINX 为你的静态内容提供服务 (html/css/js),最好将它配置为 ServiceTalk 后端服务的代理。这将使您可以将 SSL/TLS 配置保存在一个地方(仅限 NGINX 配置文件),并且您将能够使用其自动更新证书功能。有关如何将 NGINX 配置为后端服务的 SSL/TLS 代理的示例,请参见此处:https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/

但是,在这种情况下,您在 NGINX 和 ServiceTalk 之间的连接将不会被加密。在某些环境中,根据安全策略和要求,它可能不合适。如果是这种情况,您还需要使用 returns HttpServerSecurityConfiguratorHttpServerBuilder.secure() 方法为 ServiceTalk 配置 SSL/TLS。这是 secure ServiceTalk server.

的示例

为避免 CORS,请继续使用 NGINX 作为代理,即使 ServiceTalk 也配置了 SSL/TLS 个连接。如果需要避免在浏览器和后端服务之间的途中使用额外的代理,请直接针对 ServiceTalk。但是 NGINX 提供了额外的功能,比如多个后端实例之间的负载平衡。

为了在 ServiceTalk/Netty 中获得最佳 SSL 性能,我们建议使用提供的 OpenSSL 而不是内置 JDK 提供程序。有关详细信息,请参阅 Performance / netty-tcnative OpenSSL engine 文档部分。

注意:ServiceTalk 不会自动更新SSL/TLS 证书。证书过期后需要重启服务器。