我很难让我的新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证书处于活动状态时,我收到以下消息:
了SoapUI:
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的配置中唯一改变的是:
配置&gt; server-config&gt; HTTP服务&gt; Http听众&gt; http-listener-2&gt; SSL标签
新旧密钥库都在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 文件夹中:
我将自己的jks(ssl_mydomain_net.jks)添加到此文件夹,并在新的SSL映像中调整了http-listener-2的设置。这给了我与本文开头提到的相同的结果。
我错过了什么?我是否必须将某些内容调整为默认的jks文件?我是否必须从keystore.jks而不是我自己创建的密钥库创建一个csr?
答案 0 :(得分:2)
我需要什么?
从GlobalSign获取证书
在GlobalSign网站订购或续订SSL证书。在此过程中,选择使用AutoCSR订购选项。新证书的密码将存在于您必须在创建过程中提供的密码之外,该密码由GlobalSign创建的额外字符串添加。请记住此密码,因为您将在下一阶段使用它。
订单完成后,您应该会收到一份PFX文件。将此文件复制到运行IIS的Windows服务器。
设置/更改Payara的主密码
包含您的私钥和公钥的证书密码必须与Payara的主密码相匹配(这可以自由选择,这不是您在GlobalSign的认证请求的密码)。您可以通过运行以下命令来更改主密码:
asadmin change-master-password –savemasterpassword=true mydomain
安装证书
导出公钥和私钥
获取别名
运行以下命令以查找生成的别名:
keytool -list -storetype pkcs12 -keystore mydomain.pfx
您必须输入您的密钥库密码,该密码应与您的Payara主密码相同(参见步骤29)。
当此命令成功运行时,您应该在导出的第一行上看到别名。这看起来像一长串文本(例如{fa2ebfd3-z11b-492d-2c73-f5z199732p2k}),后跟日期。复制此文本字符串,我们稍后将需要它。
将证书添加到Payara
这是我失踪的两个重要步骤。我们必须将证书添加到位于payara_install_folder/glassfish/domains/mydomain/config
的 cacerts.jks 和 keystore.jks 中。这可以通过以下两个命令来完成:
keytool -importkeystore -deststorepass <payara masterpassword> \
-destkeypass <payara masterpassword> -destkeystore cacerts.jks \
-srckeystore mydomain.pfx -srcstoretype PKCS12 \
-srcstorepass <payara masterpassword> \
-alias mydomain_alias_name //in our example this would be {fa2ebfd3-z11b-492d-2c73-f5z199732p2k}
keytool -importkeystore -deststorepass <payara masterpassword> \
-destkeypass <payara masterpassword> -destkeystore keystore.jks \
-srckeystore mydomain.pfx -srcstoretype PKCS12 \
-srcstorepass <payara masterpassword> \
-alias mydomain_alias_name //in our example this would be {fa2ebfd3-z11b-492d-2c73-f5z199732p2k}
在Payara中设置http-listener
非常感谢GlobalSign支持和创建指南How To Install Comodo SSL Certificate Chain On Payara / Glassfish 4.x的Max Lam。结合所有这些知识使我想出了解决方案。
可能有办法通过运行keytool命令来替换安装证书和导出公钥和私钥部分。但由于我不是100%熟悉证书,我把它们排除在外。如果有人能告诉我正确的命令,请告诉我,我会更新答案。
答案 1 :(得分:0)
将新证书添加到服务器正在使用的JVM的信任库中。如果在列出密钥库的证书时查看输出,则可以看到新证书不是trustedCertEntry。