在JBoss EAP 7中安装Certbot配置HTTPS以解决Google Maps API部署问题
我来帮你一步步搞定JBoss EAP 7上的Let's Encrypt证书配置,让你的Google Maps API在Digital Ocean主机上正常跑起来:
第一步:用Certbot获取Let's Encrypt证书
首先在你的Digital Ocean主机上安装Certbot,根据操作系统不同命令略有差异:
- 如果你用的是Ubuntu/Debian:
sudo apt update && sudo apt install certbot -y - 如果你用的是CentOS/RHEL:
sudo dnf install certbot -y
接下来获取证书,这里有两种常用方式:
方式1:独立模式(Standalone)
适合测试环境暂时关闭JBoss的场景,Certbot会临时占用80端口完成域名验证:
sudo systemctl stop jboss-eap sudo certbot certonly --standalone -d your-domain.com
替换your-domain.com为你的实际域名,按照提示完成验证后,证书会生成在/etc/letsencrypt/live/your-domain.com/目录下,包含fullchain.pem(证书链)和privkey.pem(私钥)。
方式2:Webroot模式
如果不想停JBoss,可以用这个模式,指定JBoss应用的静态资源根目录:
sudo certbot certonly --webroot -w /path/to/your/jboss/webapp-root -d your-domain.com
Certbot会在指定目录下生成验证文件,通过HTTP访问完成域名验证。
第二步:配置JBoss EAP 7使用证书
首先把证书文件复制到JBoss的配置目录,方便管理和权限控制:
sudo cp /etc/letsencrypt/live/your-domain.com/fullchain.pem /opt/jboss-eap-7.x/standalone/configuration/ sudo cp /etc/letsencrypt/live/your-domain.com/privkey.pem /opt/jboss-eap-7.x/standalone/configuration/ # 设置权限,让JBoss用户能读取证书文件 sudo chown jboss:jboss /opt/jboss-eap-7.x/standalone/configuration/*.pem
替换/opt/jboss-eap-7.x/为你的JBoss实际安装路径。
接下来修改JBoss的配置文件(单机模式用standalone.xml,域模式用domain.xml):
创建专属安全域
找到<security-realms>节点,添加一个专门用于Let's Encrypt证书的安全域:<security-realm name="LetsEncryptRealm"> <server-identities> <ssl> <engine enabled="true" /> <pem> <certificate path="fullchain.pem" relative-to="jboss.server.config.dir" /> <private-key path="privkey.pem" relative-to="jboss.server.config.dir" /> </pem> </ssl> </server-identities> </security-realm>注:JBoss EAP 7.1及以上版本支持直接使用PEM格式证书,无需转换为JKS。如果你的版本更早,可以留言我补充转换步骤。
修改HTTPS监听器
找到<subsystem xmlns="urn:jboss:domain:undertow:...">下的<server name="default-server">,修改或添加<https-listener>,让它关联刚才创建的安全域:<https-listener name="https" socket-binding="https" security-realm="LetsEncryptRealm" />确认端口绑定
确保<socket-binding-group>里有HTTPS端口的绑定(默认是443):<socket-binding name="https" port="${jboss.https.port:443}" />
第三步:配置证书自动续期
Let's Encrypt证书有效期只有90天,所以要设置自动续期避免过期:
- 编辑crontab定时任务:
sudo crontab -e - 添加以下内容,每天中午12点自动尝试续期,续期成功后重启JBoss加载新证书:
0 12 * * * /usr/bin/certbot renew --quiet && sudo systemctl restart jboss-eap
第四步:验证配置
- 启动JBoss:
sudo systemctl start jboss-eap - 访问
https://your-domain.com,检查浏览器地址栏的锁形图标,确认证书有效。 - 测试Google Maps API,确认HTTPS环境下能正常加载使用。
最后别忘了在Digital Ocean的防火墙规则里开放443(HTTPS)和80(Certbot验证)端口哦!
内容的提问来源于stack exchange,提问作者Ronaldo Lanhellas




