Vit*_*lui 4 java security ssl https glassfish
我有一个正在运行的glassfish 4.1.1实例,并向应用程序添加了自己的证书,直到一切正常。
但是,当我尝试访问glassfish admin(DAS)时,连接不受信任,添加例外的按钮消失了。
然后我发现了一些有趣的链接,例如:
我尝试了这个:
asadmin enable-secure-admin --adminalias=myNewAlias --instancealias myNewAlias
asadmin restart-domain domain1
这样,不受信任的连接消息就会消失,并且证书也会正确显示,但是当我尝试身份验证时会抛出错误:
根据链接答案的评论,这家伙所拥有的非常相似,但我无法解决:
如何正确更改s1as证书?为了我的DAS能够正常工作...
我正在将Ubuntu 14与java-1.8.0-openjdk-amd64一起使用。
服务器日志显示以下行:
[2016-10-18T10:38:12.565 + 0200] [glassfish 4.1] [SEVERE] [] [org.glassfish.admingui] [tid:_ThreadID = 51 _ThreadName = admin-listener(2)] [timeMillis:1476779892565] [ levelValue:1000] [[javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效证书路径;javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到到所请求目标的有效证书路径;restRequest:端点= https:// localhost:4848 / management / domain / anonymous-user-enabled attrs = {} method = GET]]
我终于解决了,为什么会这样呢?使用@Mike解释:
这是因为GlassFish同时具有密钥库和信任库,并且管理控制台有效地使用2路SSL身份验证进行初始登录。如果更改s1as证书,则还需要更改glassfish-instance证书
就我而言,我试图使用自己的证书,但是没有正确删除cacerts.jks和keystore.jks文件上的最旧证书。
我正在运行下面的代码,而没有首先从文件中删除s1as和glassfish-instance,那是我错误的步骤...
asadmin enable-secure-admin --adminalias=myNewAlias --instancealias myNewAlias
要使用自己的证书运行Glassfish 4.1.1上的域管理服务器(DAS),必须遵循以下步骤:
1)将自己的证书插入cacerts.jks和keystore.jks文件中:
就我而言,我正在使用证书pkcs12:
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore keystore.jks -srckeystore myOwnCert.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias myOwnAlias
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore cacerts.jks -srckeystore myOwnCert.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias myOwnAlias
如果您有另一种证书,则必须搜索如何在这两个文件中插入证书类型:
$ GLASSFISH_HOME / domains / domain1 / config / cacerts.jks-信任库-保存所有公钥$ GLASSFISH_HOME / domains / domain1 / config / keystore.jks-密钥库-保存所有私钥
参考文献:
会话6.首次启动之前的安全配置:https : //www.nabisoft.com/tutorials/glassfish/installing-glassfish-41-on-ubuntu
http://peter-butkovic.blogspot.com.es/2013/02/glassfish-default-keystore-and.html
https://www.sslshopper.com/article-most-common-java-keytool-keystore-commands.html?jn9ed3e997=3
https://glassfish.java.net/docs/4.0/security-guide.pdf
2)删除最早的自签名证书:
默认情况下,当您运行命令enabled-secur-admin时,分配给该实例的证书为s1as,而公共实例为glassfish-instance,如@Mike解释为另一个堆栈溢出问题,即使您强制使用另一个证书。使用以下命令将两者删除:
#Restart your domain without secure-admin
$GLASSFISH_HOME/bin/asadmin disable-secure-admin
#Go to your domain config folder to remove the certificates:
cd $GLASSFISH_HOME/domains/domain1/config/
keytool -delete -alias s1as -keystore keystore.jks -storepass changeit
keytool -delete -alias glassfish-instance -keystore keystore.jks -storepass changeit
keytool -delete -alias glassfish-instance -keystore cacerts.jks -storepass changeit
keytool -delete -alias s1as -keystore cacerts.jks -storepass changeit
参考文献:
感谢@Mike:配置Glassfish SSL证书昵称的正确方法?
https://glassfish.java.net/docs/4.0/security-guide.pdf(第80页)
3)第一步,使用您自己的别名重新启动security-admin
$GLASSFISH_HOME/bin/asadmin enable-secure-admin --adminalias=myOwnAlias --instancealias myOwnAlias
$GLASSFISH_HOME/bin/asadmin restart-domain
从理论上讲,它已经完成,您将能够使用自己的证书访问DAS ...;)