gpt4 book ai didi

authentication - 基于 Glassfish 4 证书的客户端身份验证

转载 作者:行者123 更新时间:2023-12-04 08:28:25 28 4
gpt4 key购买 nike

这几天我一直在尝试为基于证书的客户端身份验证设置我的开发环境,但它就是不想工作。我正在使用 Glassfish 4 文档(安全指南)并根据它创建用于测试目的的自签名客户端证书,但我不确定我遗漏了什么,因为没有对整个过程的完整描述。当我为我的 Http-Listener 启用客户端身份验证时,服务器日志中没有收到任何错误消息,但是当我尝试从浏览器连接时,我无法与服务器建立连接。没有这个选项,我的网络应用程序工作得很好。在 chrome 中,我看到以下消息:

This site can’t be reached

127.0.0.1 refused to connect.

ERR_CONNECTION_REFUSED

在 Firefox 中:

The connection to 192.168.1.9:8181 was interrupted while the page was loading.

所以对我来说似乎发生了什么(不幸的是我无法理解到底是什么),但无法建立连接。

由于设置非常复杂,我正在寻找包含分步说明的教程或操作方法页面,但我们将不胜感激任何帮助和建议。

最佳答案

好的,我终于明白了它是如何工作的:) 我在 Java EE 7 with GlassFish 4 Application Server 第 9 章 The cerrtificate realm 一书中找到了很好的分步说明(第 247 页)基本上必须执行以下 3 个步骤:

  1. 创建客户端证书1.1 生成自签名证书:

keytool -genkey -v -alias myalias -keyalg RSA -storetype PKCS12 -keystore clientCert_1.p12 -storepass wonttellyou -keypass wonttellyou

1.2 在浏览器中导入注意!:当未导入证书时,浏览器不会要求它,而是返回一条连接错误消息,这对我来说非常具有误导性。

  1. 将第 1 步中的证书导出为 Glassfish 可以理解的格式

keytool -export -alias myalias -keystore clientCert_1.p12 -storetype PKCS12 -storepass wonttellyou -rfc -file clientCert_1.cer

RESULT => 证书存储在文件 clientCert_1.cer 中

  1. 由于我们颁发了自签名证书,为了让 GlassFish 接受我们的证书,我们需要将其导入 cacerts keystore 。

keytool -import -v -trustcacerts -alias myalias -file clientCert_1.cer -keystore ../cacerts.jks -keypass changeit -storepass changeit

注意

  • -import -v -trustcacerts部分没有在书中,但没有keytool 可能会崩溃并抛出异常。
  • changeit 是默认的 glassfish 密码

最后需要为基于证书的客户端身份验证设置应用程序服务器,它有两个部分。第一个是将登录配置添加到 web.xml:

...
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>certificate</realm-name>
</login-config>
...

第二个是在 glassfish-web.xml 中配置角色映射,以便您的应用程序具有该登录的相应角色。它看起来像这样:

 ... 
<security-role-mapping>
<role-name>YOUR_ROLE</role-name>
<group-name>YOUR_GROUP</group-name>
<principal-name>CN=Test User, OU=n/a, O=Test User, L=Cologne, ST=NRW, C=DE</principal-name>
</security-role-mapping>
...

有关 key 生成和设置 glassfish 的更多详细信息,请参阅本书。

最后还有一件让我感到困惑的事情。在管理界面上,可以找到现有 http-listenerSSL 配置选项卡。您不必启用客户端身份验证选项!

关于authentication - 基于 Glassfish 4 证书的客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849851/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com