首先,CAS客户端的配置使用最简单的配置方式,全部配置都放在web.xml文件中。虽然这种配置方式很明了,但存在几个缺点。这种配置方式不仅使web.xml文件显得臃肿,而且相关属性的配置不够灵活,不易于管理。
其次,采用了keytool生成证书。尽管直接借助于keytool能够获得自签名的X.509证书,但keytool工具不支持签署其他证书。因此,在需要签署其他证书的时候,必须使用其他证书管理工具。
鉴于以上问题,本节将采用Spring过滤链的配置方式配置CAS Client,将臃肿的配置信息从web.xml中抽取出来,简化web.xml文件。使用OpenSSL管理证书,以弥补keyool的种种不足。
1.准备环境
操作系统:32位Window XP
CAS服务器:Cas Server 3.3.3
CAS客户端:Cas Client 3.1.10
Web服务器:Tomcat 6.0.18
数据库:MySQL 5.0
JDK:jdk1.5.0_10
2.基础环境准备
JDK安装后,复制两份jdk1.5.0_10,分别命名为jdk_cas和jdk_client。
同样,复制两份Tomcat 6.0.18,分别命名为apache-tomcat-cas和apache-tomcat-client。
配置Tomcat对应的JDK。打开apache-tomcat-cas/bin/catalina.bat文件,在rem Guess CATALINA_HOME if not defined这行之前添加:set JAVA_HOME=您的安装路径/jdk_cas,然后保存。同样方式配置apache-tomcat-client,这样启动apache-tomcat-cas将使用jdk_cas,启动apache-tomcat-client将使用jdk_client。
3.生成证书
OpenSSL工具的安装配置请参考本系列文章的第1篇,接下来将生成根证书和服务器证书。
创建三个目录C:/openssl、C:/openssl/root、C:/openssl/server。然后在命令行下进入C:/openssl目录。
(注:整个过程中涉及到密码的地方均使用password)
3.1.创建根证书
//创建私钥
openssl genrsa -out root/root-key.pem 1024
//创建证书请求
openssl req -new -out root/root-req.csr -key root/root-key.pem
//证书信息,按顺序输入,最后一个选项An optional company name直接回车
CN
GuangDong
GuangZhou
JavaEECas
Programmer
root
[email protected]
password
//自签署根证书
openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem -days 3650
//将根证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkey root/root-key.pem -out root/root.p12
3.2.创建服务器证书
//创建私钥
openssl genrsa -out server/server-key.pem 1024
//创建证书请求
openssl req -new -out server/server-req.csr -key server/server-key.pem
//证书信息
CN
GuangDong
GuangZhou
JavaEECas
Programmer
localhost
[email protected]
password
//签署服务器证书
openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650
//将客户证书导出成浏览器支持的.p12(PKCS12)格式
openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12
4.启用HTTPS
4.1.在apache-tomcat-cas中启用HTTPS
打开apache-tomcat-cas/conf/server.xml,在<Connector port=”8080” …/>下面添加以下代码:
其中,keystoreFile和truststoreFile根据实际情况进行修改。
4.2.导入证书
为了使客户端信任CAS Server,我们必须在客户端导入根证书。操作步骤:
1、打开Internet选项->证书->受信任的根证书颁发机构->导入->下一步,选择root.p12文件
2、输入密码
3、选择证书存储位置
接着“下一步”直到导入成功。
4、查看已导入的证书
4.3.测试HTTPS
启动Tomcat,访问https://localhost:8443/,如果能够看到以下界面,地址栏右边出现锁图标,则说明HTTPS启用成功。
5.使用RDBMS认证
我们将采用“小蚂蚁-CAS单点登录系列(4)-使用RDBMS认证”一节所使用的cas3作为CAS认证服务器,将其拷贝到apache-tomcat-cas/webapps目录下。同时,别忘了把mysql驱动拷贝到cas3/WEB-INF/lib或apache-tomcat-cas/lib目录下。
重新启动Tomcat,如果测试使用数据库认证信息登录成功,说明CAS认证服务器配置完成。
6.配置客户端
创建Web应用client3,添加三个包cas-client-core-3.1.10.jar、commons-logging-1.0.4.jar、spring-2.5.6.jar。
6.1.修改apache-tomcat-client端口
总共有三个端口需要修改,分别是默认的Server元素的port="8005"、Connector元素port="8080"、Connector元素port="8009",笔者分别修改为9005、9090、9009。
6.2.Web.xml配置
6.3.添加资源文件
在类路径下新建文件cas-client.properties,内容如下:
cas.server.url=https://localhost:8443/cas3
cas.client.serverName=localhost:9090
第一行指定CAS服务器地址,第二行指定客户端服务名称,格式为:主机名:端口号
6.4.添加Spring配置文件
在类路径下新建文件spring-appContext.xml,内容如下:
6.5.导入根证书
由于CAS Server启用了HTTPS,要使Web客户端信任其身份,必须为jdk_client导入根证书。
keytool -import -v -trustcacerts -storepass changeit -alias root -file root/root-cert.pem -keystore E:/DevelopTools/JDK/jdk_client/jre/lib/security/cacerts
7.综合测试
7.1.启动apache-tomcat-cas
7.2.启动apache-tomcat-client
7.3.访问client3
访问http://localhost:9090/client3/secure/securedpage.jsp页面,将被引导到CAS登录页面。输入凭证信息,认证通过后将出现以下页面:
访问http://localhost:9090/client3/secure/debug.jsp页面,可以看到通过三种不同的方式获取用户名。
在http://localhost:9090/client3/secure/securedpage.jsp页面中,单击“退出”链接将单点退出系统。
8.可能遇到的问题
8.1报错:
'unable to find valid certification path to requested target'
原因:
Web应用服务器端没有导入根证书
解决方法:
在jdk_client导入根证书。
至此,本节内容结束,有遗漏或疏忽的地方请大家指出,谢谢!