GlassFish 6(Java11)启用SSL3/TLS报错:需指定ssl3证书别名
问题定位与解决方案
一、证书别名与配置校验
- 用
keytool -list -v -keystore <你的密钥库路径>命令,确认密钥库中存在s1sa别名,且证书状态有效(注意别名大小写敏感,GlassFish严格匹配大小写)。 - 打开
domains.xml,找到对应<network-listener>节点(如name="https-listener-2"),检查SSL配置节点是否正确:
确保<ssl cert-nickname="s1sa" ssl3-enabled="true" tls-enabled="true" />s1sa拼写无错误,和密钥库中的别名完全一致。 - 执行
asadmin change-master-password重置主密码,确保和密钥库密码完全相同,重置后重启GlassFish。
二、SSL3兼容性修正
Java 11默认禁用SSL3(属于不安全协议),强行启用会触发GlassFish配置校验异常,建议优先使用安全的TLS协议:
- 修改
domains.xml的<ssl>节点:<ssl cert-nickname="s1sa" ssl3-enabled="false" tls-enabled="true" tls11-enabled="false" tls12-enabled="true" tls13-enabled="true" /> - 执行
asadmin restart-domain重启域,再尝试启用TLS。
三、HTTPS上传速度慢关联排查
- 开启SSL调试日志:在
domain.xml的<java-config>节点添加JVM参数:
重启后查看日志,排查是否存在重复握手、证书链过长等问题。<jvm-options>-Djavax.net.debug=ssl,handshake</jvm-options> - 优化连接池与SSL缓存:在控制台调整HTTP连接池的
max-connections和connection-timeout参数;在<ssl>节点添加session-cache-size="1000"和session-timeout="300",减少重复握手开销。 - 检查证书类型:确保使用RSA证书(避免ECC证书在部分环境下的性能损耗),且密钥长度为2048位及以上。
四、极端情况:重置HTTPS Listener
- 执行
asadmin delete-network-listener https-listener-2删除现有Listener - 执行
asadmin create-network-listener --protocol http-listener-2 --listenerport 8181 --jkenabled true https-listener-2重新创建 - 重新配置SSL证书并指定正确的
cert-nickname,启用TLS后重启域
内容的提问来源于stack exchange,提问作者José Daniel Osorio Pacheco
相关产品推荐
相关产品推荐

