1

我正在尝试通过 Jboss 应用程序中的 CAS+LDAP 进行身份验证。配置是这样的:

  • 服务器 1:Jboss 6.10。Cas部署在这里。
  • 服务器 1:使用 OpenDS 的 LDAP。
  • 服务器 2:要登录的应用程序的 Jboss。

我已经将 jboss 配置为正确使用 SSL,并且 CAS 成功读取并针对 LDAP 进行身份验证。

当我(通过 https)到达 server1:8443/app/ 时,我被重定向到 server2:8443/cas/ 并显示登录屏幕。我使用 LDAP 上的有效用户登录,但是当流程回到应用程序时,我总是得到这个:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found

我读过它的证书问题,因为它是一个开发环境,我正在尝试自签名证书。所以我这样做了:

  1. 生成在 Server1 中的自签名

    keytool -genkey -alias jbosskey -keypass 密码 -keyalg RSA -keystore server.keystore

  2. 使用以下命令获取 Server1 的证书:

    keytool -export -alias jbosskey -keypass 密码 -file server.crt -keystore server.keystore

  3. 将 server.crt 复制到 Server2 并导入到 Jboss 的信任库中。

    keytool -import -alias server1 -file server.crt -keystore C:\dev\jboss-6.1.0.Final\server.truststore

  4. 这让我有了感觉。所以我也导入了JVM的cacerts。

    keytool -import -alias server1 -file server.crt -keystore C:\dev\jdk160_18\jre\lib\security\cacerts

  5. 不工作,所以我尝试将证书添加到 Server2 的 Jboss 的密钥库中。

    keytool -import -alias server1 -file server.crt -keystore C:\dev\jboss-6.1.0.Final\keystore.jks

Server1 Jboss server.xml

  <Connector protocol="HTTP/1.1" SSLEnabled="true" 
       port="${jboss.web.https.port}" address="${jboss.bind.address}"
       scheme="https" secure="true" clientAuth="false" 
       keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
       keystorePass="password" sslProtocol = "TLS" 
/>

Server2 Jboss server.xml

<Connector protocol="HTTP/1.1" SSLEnabled="true"
            port="8443" address="${jboss.bind.address}"
            scheme="https" secure="true" clientAuth="false"
            keystoreFile="C:\dev\jboss-6.1.0.Final\keystore.jks"
            keystorePass="password"
            truststoreFile="C:\dev\jboss-6.1.0.Final\server.truststore"
            truststorePass="password"
            sslProtocol = "TLS" />

我已经坚持了几天,不知道我是否遗漏了什么。我错过了 keytool 的重要内容吗?

提前致谢。

4

0 回答 0