在实际搭建环境中发现,很多同学都会遇到SSO环境集成的问题,其实很多情况下就是SSO的数字证书的问题。
今天就详细讲一下相关内容。
由于"应用"和"SSO" 在进行交互的时候, 是在Java代码中通过HTTPS进行交互的,这个时候Java会到相应的keystore中寻找sso证书的根证书,如果应用没有指定javax.net.ssl.trustStore,java会默认使用$JAVA_HOME/jre/lib/security
/cacerts
这里面已经放了很多根证书。
但是如果我们的正式证书过期了或者使用的是自签名的证书,那么就需要我们自己往keystore中导入sso所使用的数字证书。
这样"应用这边才能确认" sso是受信任的,并通过sso证书中的公钥来进行相应的交互。
常见错误类型
1.没有找到相应的证书,是在正式环境上,指定的keystore没有其根证书的情况下发生的,可以通过在启动脚本中去掉
指定keystore或者往指定的keystore中添加相应的根证书。
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
2.在测试环境的时候(目前测试环境使用的为过期的正式证书),有些应用因为没有导入sso测试环境的证书引起的。解决方案在应用的测试环境中导入sso测试环境的数字证书。
ERROR [edu.yale.its.tp.cas.client.CASReceipt] validation of [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://sso-test.alibaba-inc.com/cas/serviceValidate] ticket=[ST-197-Ih9I49YzhqNERxtiAPGd-cas_imitation] service=[https%3A%2F%2Fcrmcn-test.alibaba-inc.com%3A443%2Fuser%2Fturbine%2Ftemplate%2FIndex%2Faction%2Fuser.SsoSignin] errorCode=[INVALID_TICKET] errorMessage=[ticket 'ST-197-Ih9I49YzhqNERxtiAPGd-cas_imitation' not recognized] renew=false entireResponse=[<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationFailure code='INVALID_TICKET'>
ticket 'ST-197-Ih9I49YzhqNERxtiAPGd-cas_imitation' not recognized
</cas:authenticationFailure>
</cas:serviceResponse>
]]]] was not successful.
如何导出导入证书
我们可以通过比如Firefox这样的浏览器轻松的导出sso服务器的证书,也可以在服务器的环境中
从keystore中导出来再拷贝给应用端。
导出的命令是
keytool -export -keystore keystore -alias sso-cert -file ssoserver.cer
这个命令中的-keystore和-alias参数要根据实际的情况来决定
往应用端的kestore中导入证书的命令是
keytool -
import
-keystore keystore -alias sso-cert -file ssoserver.cer
查看一个keystore下面的所有证书的列表可以通过下面的命令
keytool -v -list -keystore keystore
分享到:
相关推荐
在部署了Tomcat SSL服务后,可能会遇到CAS验证问题,如`CASSSO`出现错误“`edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate Proxy Ticket Validator`”。此时,我们需要将自签名的证书...
本节将详细介绍如何配置一个基本的CAS单点登录环境,包括服务器端数字证书的生成与配置,以及Tomcat服务器的安全设置。 ##### 1. 配置服务器端的数字证书 在CAS环境中,数字证书对于确保通信安全至关重要。以下...
凭证可以是用户名和密码、数字证书或其他形式的身份证明,它们用于验证用户身份。在CAS中,处理和验证这些凭证是其核心功能之一。可能这个文件包含了有关CAS如何存储、管理和验证用户凭证的信息,或者是关于如何配置...
在CAS中,数字证书用于确保CAS Server的身份。 **2.3.2 证书内容** 数字证书通常包含以下信息: - 持有者的名称。 - 持有者的公钥。 - 签发者的名称。 - 有效期。 - 签发者的数字签名。 **2.4 CAS 安装** **...
6. **cas-server-support-x509**:这个模块提供了对X.509证书的验证支持,使得CAS能够处理基于数字证书的身份验证,适用于更安全的环境,如HTTPS和SSL连接。 7. **assembly.xml**:这是Apache Maven Assembly插件的...
Keytool是Java SDK中自带的工具,用于管理密钥库和数字证书。在CAS环境中,Keytool可能会用于生成和管理服务器的SSL证书,以确保通信的安全性。 ### 实例 在一个典型的CAS部署中,用户首次尝试访问应用A,会被...
- **数字证书**:包含公钥和个人信息的电子文档,由可信第三方机构颁发。 **附录四、条件接收系统实例介绍(ChinaCrypt)** ChinaCrypt是中国的一种CAS系统解决方案,它提供了全面的数字电视广播服务。ChinaCrypt...
在实际生产环境中,通常会从第三方机构如VeriSign获取数字证书。但在学习或测试环境中,可以使用JDK自带的`keytool`工具来自行创建证书。具体步骤如下: - 创建证书文件夹 `d:/keys` - 执行命令 `keytool -genkey -...
对于标签"CA",可能是指证书颁发机构(Certificate Authority),在CAS中,可以使用CA签发的数字证书来增强服务的安全性,比如用于HTTPS通信或服务之间的身份验证。 总的来说,这个源码资源对于想深入了解SSO技术、...
在建立安全的SSO环境中,数字证书是关键。它们用于保证客户端与服务器之间的通信安全。在这个例子中,使用JDK自带的`keytool`工具自动生成证书。在实际生产环境中,通常会从权威的证书颁发机构(如VeriSign)购买...
这包括设置 CAS 服务器的 URL、证书、端口,以及客户端应用如何验证和处理返回的 JWT 令牌。 6. **安全性**: 由于涉及到用户认证,安全是首要考虑的问题。项目应遵循最佳实践,如使用 HTTPS,确保通信的安全;同时...
- **CA (Certificate Authority)**: 证书颁发机构,提供数字证书的服务商。 - **SSL (Secure Socket Layer)**: 安全套接层协议,用于实现HTTP通信的安全加密传输。 - **ALG (Algorithm)**: 加密算法,如RSA、SHA1...
在CAS SSO中,安全通信通常依赖于SSL/TLS协议,这就需要用到数字证书。首先,我们需要使用Java的`keytool`工具来生成证书。 1. **生成证书**: 命令: ``` keytool -genkey -alias sjc -keyalg RSA -keystore c:...
- 步骤一:打开控制台,如Keytool或openssl,用于管理数字证书。 - 步骤二:生成证书请求(CSR),这包含公钥和组织信息。 - 步骤三:导出私钥,这是服务器用于解密由客户端发送的加密信息的密钥。 - 步骤四:...
凭据可以是用户名/密码对,也可以是数字证书或其他形式的身份证明信息。 通过实现这个接口,开发者可以将任何类型的认证机制集成到CAS Server中,确保企业应用能够无缝地利用CAS的SSO功能。 总的来说,CAS技术为...
CAS2.0改进了凭证处理,支持多种凭证类型,如用户名/密码、数字证书等,增强了灵活性和安全性。 【LDAP】 轻量级目录访问协议(Lightweight Directory Access Protocol, LDAP)是一种开放标准的目录服务协议,用于...