本文介绍如何在GlassFish服务器配置SSL证书,具体包括下载和上传证书文件,在GlassFish上配置证书文件、证书链和证书密钥等参数,以及安装证书后结果的验证。
本文以Linux操作系统、glassfish-4.1.2-web中默认domain1容器为例介绍。不同的操作系统或GlassFish服务器,部署操作可能有所差异,如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务。
前提条件
操作步骤
步骤一:下载SSL证书
登录数字证书管理服务控制台。在左侧导航栏选择 。
在SSL证书管理页面,定位需部署的目标证书,并确认以下信息:
在目标证书操作列单击更多进入证书详情页面,然后在下载页签中下载服务器类型为其他的证书。
解压下载的证书压缩包:
若同时包含证书文件(.pem)和私钥文件(.key),请妥善保存上述文件,后续部署时均需使用。
若仅包含证书文件(.pem),不含私钥文件(.key),需配合您本地保存的私钥文件一起部署。
说明若申请证书时使用 OpenSSL、Keytool 等工具生成 CSR 文件,私钥文件仅保存在您本地,下载的证书包中不包含私钥。如私钥遗失,证书将无法使用,需重新购买正式证书并生成CSR和私钥。
步骤二:在GlassFish服务器安装证书
登录 Linux 服务器。
阿里云服务器
以下操作以阿里云云服务器 ECS 为例进行说明,其他类型的服务器请参照对应产品文档进行操作。
登录ECS管理控制台,在页面左侧顶部,选择目标ECS实例所在地域。
在左侧导航栏中选择
,在实例页面找到目标ECS实例,点击操作列的远程连接。在弹出的对话框中,选择通过Workbench远程连接并单击立即登录。
选择终端连接作为连接方式,输入相关认证信息,并根据页面提示完成登录,即可进入服务器终端。详细操作请参考使用Workbench登录ECS实例。
说明若系统弹出“安全组白名单开通提示”面板,请按照页面提示单击一键添加。
其他云厂商服务器
请通过对应云厂商提供的远程连接功能登录服务器终端。
非云厂商服务器(如物理服务器、IDC托管主机等)
请在本地使用SSH工具登录服务器终端。
后续部分命令因操作系统类型不同而略有差异。请根据实际的服务器操作系统,选择对应的命令操作。
RHEL/CentOS 系列:包括 Alibaba Cloud Linux、Red Hat Enterprise Linux、CentOS、AlmaLinux、Rocky Linux、Anolis OS 及其衍生版本。
Debian/Ubuntu 系列:包括 Debian、Ubuntu 及其衍生版本。
开放安全组和防火墙的 443 端口。
在服务器终端执行以下命令,检测443端口的开放情况:
RHEL/CentOS 系列
command -v nc > /dev/null 2>&1 || sudo yum install -y nc # 请将以下的 <当前服务器的公网 IP> 替换为当前服务器的公网 IP sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <当前服务器的公网 IP> 443
如果输出
Ncat: Connected to <当前服务器公网 IP>:443
,则表明443端口已开放。否则需在安全组和防火墙中开放443端口。Debian/Ubuntu 系列
command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat # 请将以下的 <当前服务器的公网 IP> 替换为当前服务器的公网 IP sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <当前服务器的公网 IP> 443
若输出
Connection to <当前服务器公网 IP> port [tcp/https] succeeded!
或[<当前服务器公网 IP>] 443 (https) open
,则表明443端口已开放。否则需在安全组和防火墙中开放443端口。若端口未开放,可参照如下操作在安全组和防火墙中开放443端口。
在GlassFish安装目录下创建一个用于存放证书的目录。
进入glassfish安装目录。
本示例glassfish4安装在home路径下,请您根据实际情况调整。
cd /home/glassfish4
创建证书目录,命名为cert。
mkdir cert
将证书文件和私钥文件上传到cert目录。
说明您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTY、Xshell或WinSCP等。如果您使用的是阿里云云服务器 ECS,上传文件具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件或上传文件到Linux云服务器。
在cert目录下,执行openssl命令,将下载的PEM格式的证书转换为PKCS12格式,并修改密码为changeit,命名为mycert.p12,别名为s1as。
说明domain_name.pem与domain_name.key需分别替换为实际的证书文件和证书私钥文件。
changeit是GlassFish服务器中自带的证书的默认密码,如果您修改过,请使用实际的证书密码。
openssl pkcs12 -export -in domain_name.pem -inkey domain_name.key -out mycert.p12 -passout pass:changeit -name s1as
在cert目录下,执行keytool命令,将mycert.p12转换为JKS格式,命名为keystore.jks,别名为s1as。
keytool -importkeystore -destkeystore keystore.jks -srckeystore mycert.p12 -srcstoretype PKCS12 -alias s1as
执行keytool命令后,会提示设置keystore.jks密码和输入原mycert.p12密码,均为changeit。
在cert目录下,执行keytool命令,将下载的PEM格式的证书转换为JKS格式,命名为cacerts.jks,别名为s1as。
domain_name.pem替换为实际的证书文件。
keytool -importcert -trustcacerts -destkeystore cacerts.jks -file domain_name.pem -alias s1as
执行keytool命令后,会提示设置cacerts.jks密码,您需设置为changeit。
在cert目录下,执行以下命令,替换/home/glassfish4/glassfish/domains/domain1/config目录下的cacerts.jks和keystore.jks文件。
替换cacerts.jks
cp ./cacerts.jks /home/glassfish4/glassfish/domains/domain1/config
替换keystore.jks
cp ./keystore.jks /home/glassfish4/glassfish/domains/domain1/config
编辑/home/glassfish4/glassfish/domains/domain1/config/domain.xml配置文件,修改端口号。
定位到如下图所示network-listeners位置,并按照下述示例修改端口号,修改时请注意80、443的占用情况。
<network-listeners> <network-listener protocol="http-listener-1" port="80" name="http-listener-1" thread-pool="http-thread-pool" transport="tcp"></network-listener> <network-listener protocol="http-listener-2" port="443" name="http-listener-2" thread-pool="http-thread-pool" transport="tcp"></network-listener> <network-listener protocol="admin-listener" port="4848" name="admin-listener" thread-pool="admin-thread-pool" transport="tcp"></network-listener> </network-listeners>
进入/home/glassfish4/glassfish/bin目录,执行如下命令,重启服务器。
./asadmin restart-domain domain1
步骤三:验证SSL证书是否安装成功
请通过 HTTPS 访问您已绑定证书的域名(如
https://yourdomain.com
,yourdomain.com
需替换为实际域名)。若浏览器地址栏显示安全锁图标,说明证书已成功部署。如访问异常或未显示安全锁,请先清除浏览器缓存或使用无痕(隐私)模式重试。
说明Chrome 浏览器自 117 版本起,地址栏中的
已被新的
替代,需单击该图标后查看安全锁信息。
如仍有问题,请参考常见问题进行排查。
后续步骤(可选)
开启域名监控
建议在证书部署完成后,为域名开启域名监控功能。系统将自动检测证书有效期,并在到期前发送提醒,帮助您及时续期,避免服务中断。具体操作请参见购买并开启公网域名监控。
常见问题
安装或更新证书后,证书未生效或 HTTPS 无法访问
常见原因如下:
域名未完成备案。请参见如何查看域名解析记录以及 ICP 备案信息。
服务器安全组或防火墙未开放 443 端口。请参见开放安全组和防火墙的 443 端口。
证书的绑定域名未包含当前访问的域名。请参见确认证书是否匹配目标域名。
修改 GlassFish 应用文件配置后,未重启Flask服务。具体操作可参见重启GlassFish服务。
证书文件未正确替换,或 Flask 配置未正确指定证书路径。请检查 Flask 应用文件的证书配置和所用证书文件是否为最新且有效。
域名已接入 CDN、SLB 或 WAF 等云产品,但未在相应产品中安装证书。请参阅云产品部署证书完成相关操作。
当前域名的 DNS 解析指向多台服务器,但证书仅在部分服务器上安装。需分别在每个服务器中安装证书。
如需进一步排查,请参考:根据浏览器错误提示解决证书部署问题 和 SSL证书部署故障自助排查指南。
如何更新(替换)GlassFish 中已安装的 SSL 证书
请先备份服务器上原有的证书文件(.pem 和 .key),然后登录数字证书管理服务控制台,下载新的证书文件,并上传到目标服务器覆盖原有文件(确保路径和文件名一致)。最后,重启GlassFish服务,使新证书生效。