web-services - 获取SSL证书以与Payara 4.1一起使用

标签 web-services ssl https glassfish payara

我很难让我的新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设置:

Old SSL

新的SSL设置:

New 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/

相关文章:

web-services - 什么是 API Web 服务,您如何创建它们以及为什么?

java - 如何使用 Java 中的 Web 服务(例如 Axis2)发送复杂对象的数组或集合?

web-services - Grails Rest简单计算器示例

java - session 与 ssl session

asp.net-mvc - ASP.NET MVC2 发布到 SSL 和 WCF 服务

redirect - SSL 证书 - 不受信任的错误

java - 如何在 JAVA 中开发/组装 SOAP 缓存

java - Dropbox 找不到资源 trusted-certs.jks

asp.net - IIS 禁用 SSLv3 - 它会影响传出请求吗?

python - 在 python 上为 Oauth2 设置安全的 https 连接