最近,我开始致力于配置 Spring Web 应用程序以与 Jasig CAS 一起使用。当我在已经配置为使用 SSL 的 Eclipse (Spring Tool Suite) 中创建的服务器中运行 CAS 客户端和 CAS 服务器时,一切正常。我能够运行,验证,注销......但是,当我创建一个与STS中的服务器具有相同server.xml的Tomcat实例并让应用程序在其上运行时,在向CAS输入用户名,密码后发生此异常服务器登录表单和服务器使用生成的票证重定向到客户端登录页面:
HTTP Status 500 - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我使用了与 STS Tomcat 服务器中相同的 keystore 和信任库文件,并且证书已经导入到文件 jre/lib/security/cacerts 中。
当我尝试在 Eclipse Tomcat 服务器中同时运行 CAS 客户端和在独立 Tomcat 服务器中运行 CAS 服务器时,一切正常。但反之亦然。
STS Tomcat实例和stand alone Tomcat实例有什么区别吗?两者指的是同一个 CATALINA_BASE。
我使用 Tomcat 7.0.67、CAS 3.6.0、Spring Security 3.1.4。
最佳答案
我找到了原因。我同时安装了 JRE 和 JDK。 Eclipse 中的 Tomcat 使用 JRE,但独立的 Tomcat 使用 JDK 内部的 JRE。我将证书导入此 JRE 并且它有效。感谢 paulsm4 的建议。
关于tomcat - "PKIX path building failed"分布式CAS应用程序在单独的Tomcat实例上时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35572867/