我很难让我的新 SSL 证书与 GlassFish 3.1.2.2 一起使用。我当前的 SSL 证书即将到期,所以我在 GlobalSign 订购了续订。
使用我当前的 SSL 证书,我得到以下响应(出于测试目的,这是通过 SoapUI 完成的):
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0 JSP/2.2 (Oracle GlassFish Server 3.1.2.2 Java/Oracle Corporation/1.7)
Server: Oracle GlassFish Server 3.1.2.2
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 01:00:00 CET
Content-Type: application/xml
Transfer-Encoding: chunked
Date: Mon, 11 Jan 2016 13:38:32 GMT
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>..(xmlresponse)..</xml>
但是,当新的 SSL 证书处于活动状态时,我会收到以下消息:
肥皂界面:
Error getting response; javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake.
浏览器:
This page can’t be displayed
Turn on TLS 1.0, TLS 1.1, and TLS 1.2 in Advanced settings and try connecting to again. If this error persists, contact your site administrator.
我在 glassfish 的配置中唯一更改的是以下内容:
配置 > 服务器配置 > HTTP 服务 > Http 侦听器 > http-listener-2 > SSL 选项卡
- 证书 NickName 字段从我的旧别名 (mydomain) 到我的新别名 (mydomain.net),它与我在密钥库中的私钥的别名相匹配
- 从旧密钥库 (server.keystore) 到我的新密钥库 (ssl_mydomain_net.jks) 的密钥库字段值(文件名)
新旧密钥库都在C:\glassfish3\glassfish\domains\mydomain\config
文件夹内。
旧 SSL 设置:
新的 SSL 设置:
我已经联系了 GlobalSign 支持,我们验证了密钥库是否正确生成。
当我运行时,keytool -list -keystore ssl_mydomain_net.jks
我得到以下应该是正确的输出:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 3 entries
root, Jan 8, 2016, trustedCertEntry,
Certificate fingerprint (SHA1): <...>
intermediate, Jan 8, 2016, trustedCertEntry,
Certificate fingerprint (SHA1): <...>
<mydomain>.net, Jan 8, 2016, PrivateKeyEntry,
Certificate fingerprint (SHA1): <...>
据我得出的结论,它与 Glassfish 有关。有没有人有任何想法,因为我在这里没有选择......
2016 年 1 月 13 日更新
我从 Glassfish 3.1.2.2 升级到 Payara 4.1(基本上是 Glassfish 4.1)。我创建了一个新域,并注意到默认情况下以下 jks 文件位于mydomain/config文件夹中:
- cacerts.jks
- 密钥库.jks
我将自己的 jks (ssl_mydomain_net.jks) 添加到此文件夹中,并在新的 SSL 映像中调整了 http-listener-2 的设置,如上所述。这给了我与本文开头提到的相同的结果。
我错过了什么?我必须对默认的 jks 文件进行一些调整吗?我是否必须从 keystore.jks 而不是我自己制作的密钥库创建一个 csr?