当前位置: 首页 > 知识库问答 >
问题:

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

廉雅惠
2023-03-14

我有一个运行glassfish 4.1.1的实例,我将自己的证书添加到我的应用程序中,在此之前一切正常。

但是,当我试图访问glassfish管理员(DAS)时,连接未受信任,添加异常的按钮消失了。

然后我发现了一些有趣的链接,比如:

  • 配置Glassfish SSL证书昵称的正确方法

我试过这个:

asadmin enable-secure-admin --adminalias=myNewAlias --instancealias myNewAlias
asadmin restart-domain domain1

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

  • https://myUrl:4848/j_security_check

根据链接中答案的评论,它非常类似于那个人所拥有的,但我无法解决它:

  • 正在从中删除s1as证书。gfclient/truststore

如何正确更改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:\u ThreadID=51\u ThreadName=admin listener(2)][timeMillis:1476779892565][levelValue:1000][[javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径;javax.net.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:un能够找到到请求目标的有效认证路径;重新请求:endpoint=https://localhost:4848/management/domain/anonymous-用户启用的属性={}method=GET]]

共有1个答案

何向荣
2023-03-14

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

这是因为GlassFish有一个密钥库和信任库,并且管理控制台有效地使用双向SSL身份验证进行初始登录。如果更改s1as证书,还需要更改glassfish实例证书

在我的情况下,我试图使用自己的证书,但我没有正确删除cacerts上最旧的证书。jks和keystore。jks文件。

我在运行下面的代码时没有首先从文件中删除s1as和glassfish实例,这是我的错误步骤。。。

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实例,正如@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...;)

 类似资料:
  • 我有一个glassfish 4.1.1的实例正在运行,我在应用程序中添加了我自己的证书,直到那时一切都正常了。 但是,当我试图访问glassfish admin(DAS)时,连接被取消了,添加异常的按钮消失了。 然后我发现了一些有趣的链接,比如: null 这样,不受信任的连接消息就会消失,certicate也会正确地出现,但当我尝试身份验证时,会抛出一个错误: null 根据链接中答案的评论,这

  • 我想通过SSL连接到我的服务器。因此,我使用以下命令在服务器上生成证书: 如果我使用如下所示的TrustManager信任客户端上的所有证书,则连接可以正常工作: 但我当然不想相信所有的证书,而只相信我的证书。我尝试了以下几个命令来导入证书: 我要怎么做才能让它正常工作?有人能解释一下对一个不是很熟悉cryto领域的人所必需的步骤吗? 编辑:正如Donal Fellows所建议的那样,我尝试了自定

  • 在下面一段Android应用程序的代码中,服务器向连接Android客户端提供了一个自签名证书。也就是说,我已经用自己的CA签署了服务器的证书。该证书将使用CA的公钥进行验证,该公钥是从放置在/raw中的名为trust_store_ca的文件中获得的。问题是,如果我使用不同的证书(使用不同的CA签名,即),验证步骤不会抛出相应的SignatureException。我在NetBeans中测试了代码

  • 我有一个带有这些命令的自签名证书链,并在Apache服务器上配置了它们 但是当我尝试 我从openssl中得到一个错误 用于生成证书的命令或配置文件有问题吗? [req] distinguished_name=req_distinguished_name x509_extensions=v3_ca dirstring_type=nobmp [req_distinguished_name] comm

  • 我尝试将带有正确应用程序ID、应用程序机密等的curl请求发送到 我需要从中获取访问令牌,但获取FALSE和print next message,否则: 我的代码是: 当我手动移动到上面的链接时,我很好地获得了访问权。为什么卷曲不起作用?请帮忙。

  • 问题内容: 我遇到客户端https请求的问题。 片段可以如下所示: 我得到的是错误:证书链中的自签名证书。 使用邮递员时,我可以导入客户端证书和密钥,并且可以毫无问题地使用它。有没有可用的解决方案?我还希望对邮递员如何处理证书和工作方式有所了解。 问题答案: 根据您的问题,我想您正在使用SSL通讯的自签名证书进行开发。 如果是这种情况,请在您正在运行节点的任何地方或直接使用 这指示节点允许不信任的