You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在JBoss EAP 7中安装Certbot配置HTTPS以解决Google Maps API部署问题

在JBoss EAP 7中配置Let's Encrypt证书(Certbot)实现HTTPS

我来帮你一步步搞定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):

  1. 创建专属安全域
    找到<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。如果你的版本更早,可以留言我补充转换步骤。

  2. 修改HTTPS监听器
    找到<subsystem xmlns="urn:jboss:domain:undertow:...">下的<server name="default-server">,修改或添加<https-listener>,让它关联刚才创建的安全域:

    <https-listener name="https" socket-binding="https" security-realm="LetsEncryptRealm" />
    
  3. 确认端口绑定
    确保<socket-binding-group>里有HTTPS端口的绑定(默认是443):

    <socket-binding name="https" port="${jboss.https.port:443}" />
    

第三步:配置证书自动续期

Let's Encrypt证书有效期只有90天,所以要设置自动续期避免过期:

  1. 编辑crontab定时任务:
    sudo crontab -e
    
  2. 添加以下内容,每天中午12点自动尝试续期,续期成功后重启JBoss加载新证书:
    0 12 * * * /usr/bin/certbot renew --quiet && sudo systemctl restart jboss-eap
    

第四步:验证配置

  1. 启动JBoss:
    sudo systemctl start jboss-eap
    
  2. 访问https://your-domain.com,检查浏览器地址栏的锁形图标,确认证书有效。
  3. 测试Google Maps API,确认HTTPS环境下能正常加载使用。

最后别忘了在Digital Ocean的防火墙规则里开放443(HTTPS)和80(Certbot验证)端口哦!

内容的提问来源于stack exchange,提问作者Ronaldo Lanhellas

火山引擎 最新活动