Glassfish 4.1.1-具有我自己的证书的DAS引发“ j_security_check”错误

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
Run Code Online (Sandbox Code Playgroud)

这样,不受信任的连接消息就会消失,并且证书也会正确显示,但是当我尝试身份验证时会抛出错误:

根据链接答案的评论,这家伙所拥有的非常相似,但我无法解决:

  • 从〜.gfclient / truststore中删除s1as证书
  • 使用我的新别名证书重新启动域

如何正确更改s1as证书?为了我的DAS能够正常工作...

我正在将Ubuntu 14与java-1.8.0-openjdk-amd64一起使用。

步骤1: 在此处输入图片说明

第2步: 在此处输入图片说明

服务器日志显示以下行:

[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]]

Vit*_*lui 5

我终于解决了,为什么会这样呢?使用@Mike解释:

这是因为GlassFish同时具有密钥库和信任库,并且管理控制台有效地使用2路SSL身份验证进行初始登录。如果更改s1as证书,则还需要更改glassfish-instance证书

就我而言,我试图使用自己的证书,但是没有正确删除cacerts.jks和keystore.jks文件上的最旧证书。

我正在运行下面的代码,而没有首先从文件中删除s1as和glassfish-instance,那是我错误的步骤...

asadmin enable-secure-admin --adminalias=myNewAlias --instancealias myNewAlias
Run Code Online (Sandbox Code Playgroud)

要使用自己的证书运行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
Run Code Online (Sandbox Code Playgroud)

如果您有另一种证书,则必须搜索如何在这两个文件中插入证书类型:

$ 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
Run Code Online (Sandbox Code Playgroud)

参考文献:

感谢@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
Run Code Online (Sandbox Code Playgroud)

从理论上讲,它已经完成,您将能够使用自己的证书访问DAS ...;)