我试图在Jelastic基础设施上设置基于CAS的回声系统。我能够使用描述here的示例Web应用程序在同一个Tomcat 7实例下设置服务器和客户端。我使用的SSL证书(CA和服务器)是自签名的。
当要求受保护的资源时,webapp会正确地重定向到CAS登录页面,并且在服务器级别完成身份验证。但是,在返回流程中出现问题并且浏览器显示具有以下根本原因的异常:
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
Caused by: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Caused by: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
这是因为CAS协议具有额外的客户端 - 服务器验证对话,该对话在验证之后立即完成,并且在该对话期间,客户端必须再次信任该服务器。这次,它没有使用Tomcat的SSL设置,而是JVM的设置(参见here)
问题是,就我所知,在Jelastic上无法访问JAVA_HOME / jre / lib / security文件夹。 任何提示?感谢。
更新 我找到了解决方案。在Jelastic上,自v.1.8.5起,Tomcat应用程序对JAVA_HOME / jre / lib / security文件夹具有写权限。这个恕我直言打开了一个安全问题,但对于这个特定情况是好的。我已经能够编写一个简单的servlet,将我的证书添加到JVM cacerts文件中,并且我已经解决了这个问题。
答案 0 :(得分:0)
如果我理解正确,您需要在JVM本身上的Tomcat AND 上安装完全相同的证书吗?
目前,Jelastic SSL安装选项仅将证书安装到应用程序/ Web服务器(在本例中为Tomcat)。要在JVM上安装它,您需要向您的托管服务提供商寻求帮助。
您还应该要求他们向开发团队提出此功能的功能请求;我想默认情况下将证书安装到两个地方(Tomcat和JVM)会很有用吗?
(有哪些案例你可以看到每个证书都有不同的证书?)