Sve*_*lav 3 authentication client-certificates ssl-certificate glassfish-4.1
几天来,我一直在尝试为基于证书的客户端身份验证设置开发环境,但这只是不起作用。我正在使用Glassfish 4文档(安全性指南),并根据它创建用于测试目的的自签名客户端证书,但由于无法完整描述整个过程,因此我不确定所缺少的内容。当我为Http-Listener启用客户端身份验证并且在服务器日志中没有收到任何错误消息时,但是当我尝试从浏览器进行连接时,我无法与服务器建立连接。没有此选项,我的Web应用程序将正常运行。在Chrome浏览器中,我看到以下消息:
无法访问该网站
127.0.0.1拒绝连接。
ERR_CONNECTION_REFUSED
在Firefox中:
页面加载时,与192.168.1.9:8181的连接被中断。
因此对我来说似乎正在发生某些事情(不幸的是,我无法确切理解是什么),但是无法建立连接。
由于设置非常复杂,因此我正在寻找具有逐步说明的教程或操作方法页面,但是对您的帮助和建议将不胜感激。
好的,我终于明白了它是如何工作的:)我在带有GlassFish 4 Application Server的Java EE 7书中找到了很好的循序渐进指导,第9章,特定领域(第247页)一个人必须基本执行以下3项:脚步:
keytool -genkey -v -alias myalias -keyalg RSA -storetype PKCS12 -keystore clientCert_1.p12 -storepass wonttellyou -keypass wonttellyou
1.2将其导入浏览器NB !:未导入证书时,浏览器不要求输入证书,而是返回连接错误消息,这对我来说是极具误导性的。
keytool -export -alias myalias -keystore clientCert_1.p12 -storetype PKCS12 -storepass wonttellyou -rfc -file clientCert_1.cer
结果=>证书存储在文件clientCert_1.cer中
keytool-导入-v -trustcacerts-别名myalias-文件clientCert_1.cer -keystore ../cacerts.jks -keypass changeit -storepass changeit
注意
-import -v -trustcacerts不在本书中,但是如果没有它,keytool可能会崩溃并引发异常。最后,需要为基于证书的客户端身份验证设置应用程序服务器,该服务器分为两个部分。第一个是将登录配置添加到web.xml:
...
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>certificate</realm-name>
</login-config>
...
Run Code Online (Sandbox Code Playgroud)
第二个是在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>
...
Run Code Online (Sandbox Code Playgroud)
有关密钥生成和设置Glassfish的更多详细信息,请参考本书。
最后还有一件令我困惑的事情。通过管理界面,可以找到现有http-listener的SSL配置选项卡。您不必启用“ 客户端身份验证”选项!