我很难让我的新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的配置中唯一更改的内容是:
配置>服务器配置> HTTP服务> Http侦听器> http-listener-2> SSL选项卡
从我的旧别名(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
keystore.jks
我在此文件夹中添加了自己的jks(ssl_mydomain_net.jks),并在新的SSL映像中如上所述调整了http-listener-2的设置。这给了我与本文开头提到的相同的结果。
我想念什么?我是否需要对默认的jks文件进行调整?我是否必须从keystore.jks创建一个csr,而不是自己制作的keystore?
最佳答案
我需要什么?
GlobalSign SSL证书
安装了IIS的Windows服务器
Payara实例
从GlobalSign获取证书
在GlobalSign网站上订购或续订SSL证书。在此过程中,选择选项“订购AutoCSR”。新证书的密码将存在于您在创建过程中必须提供的密码中,该密码由GlobalSign创建的额外字符串添加。请记住该密码,因为在下一阶段将需要它。
订单完成后,您应该会收到一个PFX文件。将此文件复制到运行IIS的Windows服务器。
设置/更改Payara的主密码
包含您的私钥和公钥的证书密码必须与Payara的主密码匹配(可以自由选择,这不是您在GlobalSign提出的认证请求的密码)。您可以通过运行以下命令来更改主密码:
asadmin change-master-password –savemasterpassword=true mydomain
安装证书
右键单击PFX文件,然后选择“安装PFX”。
在欢迎屏幕上,单击“下一步”。
在要导入的文件屏幕上,单击下一步,因为默认情况下PFX文件位置应该在其中。
输入密码。请记住,这是您在创建证书时放弃的密码,该证书由创建的字符串GlobalSign扩展。
选择将此密钥标记为可导出。选项。
选择包括所有扩展属性。选项。
点击下一步
在“证书存储”窗口中,选择“将所有证书放入以下存储”选项。
单击浏览按钮。
选择个人商店。
点击确定
点击下一步
点击完成
导出公钥和私钥
打开Microsoft管理控制台(开始>运行> mmc>确定)
单击文件>添加/删除管理单元
在“可用的管理单元”列表下选择“证书”
点击添加按钮
在下一个窗口中,选择“我的用户帐户”选项
点击完成
点击确定
在管理控制台中,展开证书-当前用户>个人>证书。如果全部正确,则应该看到3个证书:GlobalSign域验证CA,GlobalSign根CA和mydomain.net。
右键单击mydomain.net条目
选择“所有任务>导出...”。
在欢迎屏幕中,按下一步
选择是,导出私钥选项
点击下一步
在“导出文件格式”窗口中,选择“个人信息交换-PKCS#12(.PFX)”,然后选择“如果可能,在证书路径中包括所有证书”和“导出所有扩展属性”选项。
点击下一步
在“密码”窗口中,输入您的Payara主密码(必须匹配!)
点击下一步
选择要放置导出PFX文件的位置(例如mydomain.pfx),然后单击“下一步”。
点击完成
获取别名
运行以下命令以查找生成的别名:
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
打开您的Payara管理控制台(通常为http://localhost:4848)
转到配置>服务器配置> HTTP服务> HTTP侦听器> http-listener-2
在常规选项卡上启用安全性
在SSL选项卡上,启用SSL3和TLS
在证书昵称中,输入mydomain_alias_name(在我们的情况下为{fa2ebfd3-z11b-492d-2c73-f5z199732p2k})
在“密钥库”字段中,输入keystore.jks。
按保存按钮
重新启动您的域
测试是否有效! :)
非常感谢GlobalSign的支持以及Max Lam创建了指南How To Install Comodo SSL Certificate Chain On Payara / Glassfish 4.x。结合所有这些知识,我想到了解决方案。
可能有一种方法可以通过运行keytool命令来替换“安装证书”并导出公共和私有密钥部分。但是由于我不是100%熟悉证书,因此我将那些证书排除在外。如果有人可以告诉我正确的命令,请告诉我,我将更新答案。
关于web-services - 获取SSL证书以与Payara 4.1一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726305/