不久前,我写了一个小教程 ,介绍如何生成“让我们加密SSL”证书并将其安装在Glassfish Java EE平台上。 这个技巧对我来说是一个奇迹,但是每三个月必须手动更新和重新安装证书变得很烦人。
我做了一些研究,并且与第一个教程一样,这基本上是我的发现的总结。 在开始之前,我应该提到Daschner先生 ,他向我解释了Java EE世界中通常如何处理HTTPS –非常感谢!
长话短说:Payara,Glassfish,JBoss和其他公司在处理HTTPS的方式上都有一些差异,因此Dachner先生说,理智的方法是让他们在后台通过HTTP工作并让Apache HTTP Server实际与用户通信,充当反向代理,将所有请求转发到隐藏的Java EE平台,或从隐藏的Java EE平台转发所有请求。
首先,请下载Payara或您选择的其他服务器,并以默认配置安装并运行它。 默认情况下,它应该在端口8080
上侦听。 无需进一步做任何事情。
然后,按照此处的说明安装Apache,并在文件/etc/apache2/sites-available/example.com.conf
,指定以下内容(链接文章中的文件为example.com.conf
):
<VirtualHost *:80>...ProxyPass / https://0.0.0.0:8080/ProxyPassReverse / https://0.0.0.0:8080/ProxyPass /myapp http://0.0.0.0:8080/myappProxyPassReverse /myapp http://0.0.0.0:8080/myapp
</VirtualHost>
保存更改后,不要忘记重新加载Apache
,因此它将读取新的配置:
sudo systemctl reload apache2
现在,指示防火墙为传入连接公开端口80
(这可能已经配置好了),您已经完成了一半。 到目前为止,您有一台正在运行的Apache服务器,该服务器会将所有发给www.example.com
和www.example.com/myapp
请求转发到内部Payara。
要通过Let's Encrypt启用SSL,只需按照此处描述的步骤操作,当certbot
出现以下消息时,请不要忘记按2
:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
按2
将指示certbot自动配置Apache,以便它将所有HTTP通信重定向到HTTPS。 这非常方便,因为http://
链接仍然广泛传播,因此仅将用户重定向到安全替代项才有意义。
就是这样,现在一切都可以通过HTTPS正常工作,并且通过www.example.com
访问Java EE应用程序时,您应该始终在浏览器中看到绿色的锁。 我唯一不喜欢的事实是,显然,我们必须在Apache的配置文件中指定每个上下文根(即/myapp
)。 这似乎很不方便,所以我问了 StackOverflow,我们如何避免这样做-如果您碰巧知道,请继续并发布答案!
翻译自: https://www.javacodegeeks.com/2019/01/apache-payara-lets-encrypt.html