通过Jersey和Let's Encrypt HTTPS使用Apple(Netty)的ServiceTalk作为RESTful API

时间:2019-11-19 19:20:30

标签: java rest http netty servicetalk

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

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

1 个答案:

答案 0 :(得分:1)

是的,如果您已经有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之间的连接将不会被加密。在某些环境中,根据安全策略和要求,这可能是不合适的。在这种情况下,您还需要使用Sub readClipboard() Dim DataObj As New MSForms.DataObject Dim S As String DataObj.GetFromClipboard S = DataObj.GetText S = Application.Clean(S) S = Application.Trim(S) S = Split(S) End Sub 返回HttpServerBuilder.secure()的方法为ServiceTalk配置SSL / TLS。这是一个secure ServiceTalk server的示例。

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

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

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