不久前,我写了一个小教程 ,介绍如何生成“让我们加密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
):
保存更改后,不要忘记重新加载Apache
,因此它将读取新的配置:
sudo systemctl reload apache2
现在,指示防火墙为传入连接公开端口80
(这可能已经配置好了),您已经完成了一半。 到目前为止,您有一台正在运行的Apache服务器,该服务器会将所有发给www.example.com
和www.example.com/myapp
请求转发到内部Payara。
要通过Let's Encrypt启用SSL,只需按照此处描述的步骤操作,当certbot
出现以下消息时,请不要忘记按2
:
按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