欢送这两天的折腾将成为历史啦~~
说说,简单的cas配置(跑通流程)。
1.cas服务器端配置。
下载:http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip
我使用的服务器为tomcat
1.1首先创建证书:
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3000(过期时间,不写默认90天)
您的名字与姓氏是什么?
[Unknown]: maggie(你的计算机名称或域名,但是此处我使用IP的时候客户端是会报错的!!)
您的组织单位名称是什么?
[Unknown]: (回车)
您的组织名称是什么?
[Unknown]: (回车)
您所在的城市或区域名称是什么?
[Unknown]: (回车)
您所在的州或省份名称是什么?
[Unknown]: (回车)
该单位的两字母国家代码是什么
[Unknown]: (回车)
CN=maggie, OU=null, O=null, L=null, ST=null, C=null 正确吗?
[否]: y
1.2导出证书:
keytool -export -trustcacerts -alias tomcat -file cas.cer -keystore server.keystore -storepass changeit
1.3配置cas服务器
(我使用的是Tomcat6)
打开tomcat6/conf/server.xml
找到其中注释掉的包含“port="8443"”部分,将其替换为:
(其中keystoreFile为1.1中创建的证书文件)
1.4部署cas服务器端war
解压下载的cas-server-3.1.1-release.zip ,在里面的modules/cas-server-webapp-3.1.1.war,
将其重命名为cas311.war(便于访问,也可不改),部署至tomcat的webapp文件夹下。
1.5测试部署的cas服务器端war
在IE浏览器中输入:http://ip:8443/cas311/login (其中cas311为部署的war包的名字),此时会出现“安全警报”,点击“是”.
浏览器出现cas的默认登录页面,此时验证的方式为默认的验证,只要用户名、密码相同即可验证成功。
具体应用到项目时需要扩展,这里不再赘述。
验证成功后,会显示验证成功的页面。
2.cas客户端配置
下载:http://www.ja-sig.org/downloads/cas/cas-client-java-2.1.1.zip
2.1导入证书
将1.2导出的证书导入到cas客户端使用的jre中。
%JAVA_HOME%/bin/keytool -import -keystore %JAVA_HOME%/jre/lib/security/cacerts -file cas.cer -alias maggie
可通过以下语句查看所有导入的证书(一般没有异常,导入既是正常的)
%JAVA_HOME%/bin/keytool -list -v -keystore %JAVA_HOME%/jre/lib/security/cacerts >a.txt
(其中 >a.txt为把查询结果另存至当前目录的a.txt中)
2.2客户端程序配置
2.2.1添加jar包
解压下载的cas-client-java-2.1.1.zip,找到cas-client-java-2.1.1/dist/casclient.jar,
将其添加至需要进行cas认证的项目的/WEB-INF/lib下面。
2.2.2配置需要进行cas认证的项目的web.xml。
其中:
前两个网址必须使用1.1制作证书时,输入的第一个参数(计算机名或IP)。
第三个网址为cas客户端程序的服务地址
3.遇到的问题:
3.1java.security.cert.CertificateException: No name matching maggie found
是由于生成证书时,使用的是IP或别的什么,反正不是机器名。
解决办法:好吧,用命令删除证书,从新做吧。。。
命令为:
keytool -delete -E:/server.keystore
(注意,此处删除成功,但不会删除磁盘上的文件,保险点,手动删了吧~)
3.2No subject alternative names present
是由于生成证书时,使用的是IP或别的什么,反正不是机器名。
解决办法同3.1
3.3unable to find valid certification path to requested target
由于jre中找不到证书
(这个问题折腾我N久!!)
发现eclipse中跑正常,单独启动tomcat就会报错。
后来仔细一查才发现tomcat使用的jre和eclipse中的不一样。
查找tomcat使用的jre方法如下:
打开tomcat/bin/tomcat6w.exe
打开“Java”选项卡,第一个文本框:Java Virtual Machine,
看到了吧?就那里面的鬼东西。。。
不知道java6是怎么搞的。。。安装后弄两个jre,
而一般配的java_home都是jdk目录的那个。
3.4 Unable to validate ProxyTicketValidator[[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] ...
验证公司给错我证书了。。。。。。。。。。。。。。。。。。。。。