Yale CAS Server的部署及cas-java-client 3.2的应用
环境:
tomcat7.05
cas-server-3.4.5
cas-client-3.2.0
一 . 证书实践
1.生成keystore
keytool -genkey -alias cas -keypass changeit -storepass changeit -keyalg RSA -validity 3600 -dname "CN=localhost, OU=KENNY, O=KENNY" -keystore cas.keystore
注意CN的填写,必须是访问的域名。因为是SSL,所以对域名要求比较严格。
2.查看当前JRE的keystore,输出到t.txt中
keytool -list -v -keystore %java_home%/jre/lib/security/cacerts > t.txt
3.删除证书
keytool -delete -alias cas -keystore %java_home%/jre/lib/security/cacerts -keypass changeit
4.导出crt
keytool -export -alias cas -keypass changeit -file cas.crt -keystore cas.keystore
5.导入证书到JRE
keytool -import -alias cas -file cas.crt -keypass changeit -keystore %java_home%/jre/lib/security/cacerts
再提醒一次:
①.生成数字证书的时候必须使用主机名或者域名作为证书名称(CN),
例如sso.example.com(CN=sso.example.com, OU=example, O=example, L=beijing, ST=beijing, C=china)
②.检查JAVA_HOME环境变量(echo $JAVA_HOME),确认tomcat使用了那一个jre(有时候一台机器上会有多个jre),需要将生成的证书文件导入至web服务器使用的那个jre的信任证书列表中,可以使用keytool -list命令检查证书是否导入成功。
二.配置tomcat使用HTTPS
把cas.keystore文件放到tomcat的conf目录下
然后打开tomcat目录下 conf/server.xml文件
查找
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"默认这一段是注释的,去掉注释符号然后修改为以下
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" keystorePass="changeit" keystoreFile="conf/cas.keystore" maxThreads="150" scheme="https" secure="true" enableLookups="false" disableUploadTimeout="true" acceptCount="100" clientAuth="false" sslProtocol="TLS" />
<!-- CAS configure Begin --><filter> <filter-name>CasSingleSignOutFilter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class></filter><filter-mapping> <filter-name>CasSingleSignOutFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><filter> <filter-name>CasAuthenticationFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://localhost:8443/cas-server/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>https://localhost:8443</param-value> </init-param><init-param> <param-name>renew</param-name> <param-value>false</param-value> </init-param></filter><filter-mapping> <filter-name>CasAuthenticationFilter</filter-name> <!-- 过滤器保护的URL,如果能访问这个保护的URL,表示经过CAS验证,可以做获取权限的操作。--> <url-pattern>/*</url-pattern></filter-mapping><filter> <filter-name>CasValidationFilter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://localhost:8443/cas-server/</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>https://localhost:8443</param-value> </init-param> <init-param> <param-name>redirectAfterValidation</param-name> <param-value>true</param-value> </init-param></filter><filter-mapping> <filter-name>CasValidationFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><filter> <filter-name>CasHttpServletRequestWrapperFilter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><filter-mapping> <filter-name>CasHttpServletRequestWrapperFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><!-- CAS configure End -->