根据目前测试的情况得出以下的分析结论:
1、CAS 证书 分为 HTTP 和HTTPS 两种访问方式 (HTTP 模式 不需要JDK 证书直接可以访问,而HTTPS 模式需要JDK 证书的支持)。
2、如果JDK 中的jre/lib/security 目录下的密钥文件 cacerts 没有访问权限的话也是报错的。
3、如果在应用程序访问的JDK 不是你所导入证书的JDK的话也会出现证书的错误。
4、目前还有一种情况是当jdk 中存在证书时,且以上的情况都满足的时候还出现如下错误暂时还没有解决
以下是应用程序CAS报错信息:
edu.yale.its.tp.cas.util.SecureURL -ST票据验证异常,e:class javax.net.ssl.SSLHandshakeException
ST票据验证异常
javax.net.ssl.SSLHandshakeException:General SSLEngine problem
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:
PKIX path validation failed:java.security.cert.CertPathValidatorException: signature check failed
edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://cas.hundsun.com:8443/cas/serviceValidate] ticket=[ST-73-gicvl1BIeG9b5LdPWBFz-cas] service=[http%3A%2F%2Flocalhost%3A8086%2FCasTest%2Findex.jsp] renew=false]]]
方法一:使用keytool手动导入证书,为JRE环境导入信任证书
摘自:http://www.cnblogs.com/wanghaixing/p/5630070.html
方法二:使用代码下载证书保存
摘自:https://blog.csdn.net/frankcheng5143/article/details/52164939
方法三:服务器不信任我们自己创建的证书,所以在代码中忽略证书信任问题。