我正在尝试通过 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
我读过它的证书问题,因为它是一个开发环境,我正在尝试自签名证书。所以我这样做了:
生成在 Server1 中的自签名
keytool -genkey -alias jbosskey -keypass 密码 -keyalg RSA -keystore server.keystore
使用以下命令获取 Server1 的证书:
keytool -export -alias jbosskey -keypass 密码 -file server.crt -keystore server.keystore
将 server.crt 复制到 Server2 并导入到 Jboss 的信任库中。
keytool -import -alias server1 -file server.crt -keystore C:\dev\jboss-6.1.0.Final\server.truststore
这让我有了感觉。所以我也导入了JVM的cacerts。
keytool -import -alias server1 -file server.crt -keystore C:\dev\jdk160_18\jre\lib\security\cacerts
不工作,所以我尝试将证书添加到 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 的重要内容吗?
提前致谢。