1

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

这个网站无法达到

127.0.0.1拒绝连接。

ERR_CONNECTION_REFUSED

而在Firefox中:

,而该页面被加载到192.168.1.9:8181的连接被中断。

因此,对于我来说,似乎有什么东西(不幸我不明白究竟是什么)正在发生,但无法建立连接。

由于设置非常复杂,我正在寻找一个教程或指导方法,但有任何帮助和建议将受到高度赞赏。

回答

1

好吧,我终于得到了它是如何工作:)我在书中的Java EE 7找到很好的一步一步的指示在GlassFish 4应用服务器,第9章,的cerrtificate境界(第247页) 一个有basicly做到以下3个步骤:

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

密钥工具-genkey -v -alias myalias -keyalg RSA -storetype PKCS12 -keystore clientCert_1.p12 -storepass wonttellyou -keypass wonttellyou

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

  • 导出证书从步骤1到的格式的Glassfish可以理解
  • 密钥工具-export -alias myalias -keystore clientCert_1.p12 -storetype PKCS12 - storepass wonttellyou -rfc -file clientCert_1.cer

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

    1. 由于我们发布了自签名证书,为了让GlassFish接受我们的证书,我们需要将其导入到cacerts密钥库中。

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

    注意

    • 部分:-import -v -trustcacerts不在书中,但没有 它keytool可能会崩溃扔e xception。
    • 的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> 
    ... 
    

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

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

    +0

    请不要链接到该网站 - 它主要存在电子书的未经授权的盗版。您提到的书可以在https://www.packtpub.com/application-development/java-ee-7-glassfish-4-application-server –

    +0

    合法获得。好的,谢谢您的建议! – Svetoslav