注:以下配置为本人亲测,如有问题请留言;转载请注明:http://blog.csdn.net/wqmain/article/details/8562602

目录结构如下:

l  名词解释

l  测试环境

l  配置说明

一、生成服务端密钥文件
二、生成服务端证书
三、导入证书文件到cacerts密钥库文件
四、服务端Tomcat配置
五、生成客户端密钥库文件
六、客户端应用配置
七、补充说明
八、常见配置错误

名词解释

单向认证:即CAS服务端采用HTTPS方式访问、客户端应用使用HTTP方式访问。

测试环境

服务端:Windows Server 2008 + JDK1.6 + Tomcat6.0

客户端:Windows XP/WIN7 + JDK1.6 + Tomcat6.0

CAS 服务端版本为 3.5.0,对应客户端jar包版本为 3.2.1

CAS 下载地址:http://www.jasig.org/cas/download

配置说明

一、     生成服务端密钥文件

登录服务器打开一个CMD窗口(开始菜单 -> 运行输入cmd后回车)并切换到tomcat安装目录下(如:c:\tomcat-cas),执行如下命令:

keytool -genkey -alias casserver -keypass demosso -keyalg RSA -keystore casserver.keystore -validity 365


执行后,可以看到tomcat安装目录下生成了一个casserver.keystore文件。如下图:


说明:-alias指定别名为casserver;-keyalg指定RSA算法;-keypass指定私钥密码;-keystore指定密钥文件名称为casserver.keystore;-validity指定有效期为365天。另外提示的输入keystore密码应与-keypass指定的相同;您的名字与姓氏是CAS服务器使用的域名(不能是IP,也不能是localhost),其它项随意填。

注意:服务器上如果有多个JDK,请确认环境变量中的JDK路径为tomcat所使用的JDK,如果不在环境变量中,也可切换到指定JDK的bin目录下执行命令;提示的输入keystore密码应与-keypass必须与指定的相同,否则后面tomcat启动会报IO异常(Cannot recover key)。


二、     生成服务端证书

根据以上生成的服务端的密钥文件可以导出服务端证书,执行以下命令:

keytool -export -alias casserver -storepass demosso -file casserver.cer -keystore casserver.keystore


执行后,可以看到tomcat安装目录下生成了一个casserver.cer文件。如下图:


说明:-alias指定别名为casserver;-storepass指定私钥为demosso;-file指定导出证书的文件名为casserver.cer;-keystore指定之前生成的密钥文件的文件名。

注意:-alias和-storepass必须为生成casserver.keystore密钥文件时所指定的别名和密码,否则证书导出失败,报如下错误:



三、     导入证书文件到cacerts 密钥库文件

导入以上生成的服务端的证书文件到一个cacerts密钥库文件,执行以下命令:

keytool -import -trustcacerts -alias casserver-storepass demosso  -file casserver.cer–keystore cacerts


执行后,可以看到tomcat安装目录下生成了一个cacerts文件。如下图:



四、     服务端Tomcat配置

在制作完成密钥文件、证书文件、密钥库文件后即可进行服务端Tomcat的配置。打开$CATALINA_HOME/conf/server.xml文件,注释掉如下代码段:

<Connector port="80"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

并取消注释<Connectorport="8443" protocol="HTTP/1.1" SSLEnabled="true"…/>代码段,修改后如下:


说明:port一般为8443或443,最常用的是443端口(https默认端口),这样https方式访问的时候可以不加端口号(如:https://sso.demo.com/cas/login);keystoreFile为tomcat目录下的密钥文件;keystorePass为私钥密码;truststoreFile为生成的信任文件,如果此处不指定则默认为$JAVA_HOME/jre/lib/security/cacerts文件;其它属性默认即可。


五、     生成客户端密钥库文件

单向认证的客户端配置只需生成客户端信任文件caserts即可。首先将服务端生成的证书文件(之前生成的casserver.cer文件)复制到$JAVA_HOME/jre/lib/security下,然后打开CMD窗口切换到$JAVA_HOME/jre/lib/security下并执行命令:

keytool -import -trustcacerts -alias casclient-storepass ssoclient -file casserver.cer -keystore cacerts


执行后,可以看到$JAVA_HOME/jre/lib/security目录下生成了一个cacerts文件。如下图:


六、     客户端应用配置

1、应用程序WEB-INF\lib目录下加入cas-client-core-3.2.1.jar包并添加到buildpath中;

2、编辑应用程序中的web.xml文件在最末端加入如下内容:

<filter><filter-name>CAS Single Sign Out Filter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter><filter-name>CAS Authentication Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>https://sso.demo.com/cas/login</param-value></init-param><init-param><param-name>renew</param-name><param-value>false</param-value></init-param><init-param><param-name>gateway</param-name><param-value>false</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://192.68.69.75:80</param-value></init-param>
</filter>
<filter>
<filter-name>CASValidation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>https://sso.demo.com/cas</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://192.68.69.75:80</param-value></init-param><init-param><param-name>useSession</param-name><param-value>true</param-value></init-param><init-param><param-name>redirectAfterValidation</param-name><param-value>true</param-value></init-param>
</filter>
<filter><filter-name>CAS HttpServletRequest WrapperFilter</filter-name><filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><filter><filter-name>LoginFilter</filter-name><filter-class>demo.filter.LoginFilter</filter-class></filter>
<filter-mapping><filter-name>CAS Single Sign Out Filter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping><filter-name>CAS Authentication Filter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping><filter-name>CAS HttpServletRequest WrapperFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping><filter-name>LoginFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>


说明:LoginFilter内容一般为获取用户基本信息、菜单信息然后保存到session中;sso.demo.com为CAS服务器的域名,也就是之前使用keytool –genkey命令指定的“名字与姓氏”。若未申请域名,也可以本地模拟实现域名解析,编辑C:\WINDOWS\system32\drivers\etc\hosts文件添加:CAS服务器IP  sso.demo.com 即可),如下图:


注意:serverName属性值为客户端实际IP地址,可以为域名但绝不能为localhost!

1、   客户端程序单点退出功能,需要访问https://sso.demo.com/cas/logout,下面提供了一个示例,当点击退出按钮(或超链接)时,调用javascript方法ssoLogout()。ssoLogout()定义如下(可根据实际需求自行修改):

<scripttype="text/javascript">
function ssoLogout(){if(confirm('确定要退出系统吗?')){top.location.href ='https://sso.demo.com/cas/logout?service='+location.protocol+'//'+location.host+location.pathname;}
}
</script>

七、     补充说明

上面讲的是CAS单独部署的情况,也就是与其它应用分开部署。但有些情况是CAS与其它应用部署到同一台机器同一个Tomcat(关键问题是使用同一个JDK),这种情况下,服务端Tomcat配置中的<Connector truststoreFile属性就要指定为jdk下的cacerts文件路径或者直接注释掉(默认会找$JAVAHOME\jre\lib\security\下的cacerts文件)。这样服务端和客户端是同一个,也就不必再根据服务端证书生成客户端密钥库文件了。

八、     常见配置错误

1、  CAS服务端Tomcat启动后报错:Error initializing endpoint java.io.IOException: Cannot recover key

是由于生成服务端密钥文件时所指定的keypass与提示输入的“keystore密码”不一致。

2、  javax.servlet.ServletException: org.jasig.cas.client.validation.TicketValidationException:绁ㄦ牴'ST-2-hozuLnLtIVGeaD5yju0Y-cas'涓嶇鍚堢洰鏍囨湇鍔?

一般是由于客户端应用web.xml中配置的serverName属性值为localhost或CAS服务端cas-servlet.xml配置文件中的<bean logoutController/>没加p:followServiceRedirects="true"退出后重定向属性。

3、  SSLHandshakeException: java.security.cert.CertificateException: Nosubject alternative names present

是由于客户端应用web.xml配置中的casServerLoginUrl和casServerUrlPrefix两个URL属性的域名与证书中定义的不一致。

CAS 使用 HTTPS 单向认证方式 服务端和客户端配置相关推荐

  1. win2016开启ntp_WindowsServer2016NTP服务端和客户端配置【NTP时间同步服务器】

    目标:A.B两台Windows Server 2016系统的服务器.B要做为NTP服务器使用,而只有A可以连到互联网.所以先将A作为NTP服务端,再将B作为既是服务端又是客户端.其它设备同B服务器同步 ...

  2. 运维必备_ganglia集群监控服务端及客户端配置实战

    0x01.前言 Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点.Ganglia的核心包含gmond.gmetad以及一个Web前端.主要是用来监控系统性能 ...

  3. 运维必备:ganglia集群监控服务端及客户端配置实战

    0x01.前言 Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点.Ganglia的核心包含gmond.gmetad以及一个Web前端.主要是用来监控系统性能 ...

  4. java 集成 cas系统 服务端和客户端配置

    http://blog.csdn.net/yunye114105/article/details/7997041 参考: http://blog.csdn.net/diyagea/article/de ...

  5. LINUX环境下VNC服务端与客户端配置

    公司开发原来都是用的Xmanager软件,但近期爆出该软件存在后门漏洞问题,安防部门要求停止使用老版本的Xmanager进行升级或改用开源VNC软件,因此在网上查看了一些配置说明,特整理如下: VNC ...

  6. linux服务器和客户端配置,Linux基础教程:YUM服务端与客户端配置步骤

    服务端配置:(分两种情况,rhce无需掌握,感兴趣的话可以研究): 情况1.yum直接使用光盘(光盘仓库默认做好了)做服务端配置 方式一:直接挂载光驱使用 mkdir /mnt/dvd mount / ...

  7. SkyWalking 服务端、客户端配置

    基于 Docker 安装 ElasticSearch 基于 Docker 安装 ElasticSearch 在 为什么需要链路追踪 章节中介绍过 SkyWalking 存储方案有多种,官方推荐的方案是 ...

  8. linux syslog日志转发服务端、客户端配置

    syslog服务器 1.#开启远程UDP模块 sed -ri "s/^#(.*imudp)/\1/" /etc/rsyslog.conf sed -ri "s/^#(.* ...

  9. NFS(NFS介绍,NFS服务端和客户端配置)

    一.NFS服务介绍 NFS是 Network File system的缩写 分为2.3.4三个版本,2和3由sun公司起草开发,4.0开始netapp公司参与并主导开发 NFS数据传输基于RPC协议:

最新文章

  1. C语言比较好的风格梳理
  2. Excel问题汇总!
  3. weeklyblogging_20100805PM
  4. c语言if(!k1)x=1,C语言选择题题库2
  5. UITextField
  6. boost::graph模块实现读graph文件.dat的测试程序
  7. 留学申请中,你们怎么老让我做科研啊?
  8. securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐
  9. java 日期是否合法_检测日期字符串是否为合法(java版)
  10. TV3是马来西亚第一家商营电视台
  11. 2.24. Spring boot with Apache Kafka
  12. 面试题 04.08. 首个共同祖先
  13. asp.net中XmlDocument解析出现出错,处理特殊字符
  14. 扫描局域网IP和MAC的有力工具BPSNMPUtil
  15. Windows+Python3.7下自动生成requirements.txt文件
  16. 35岁程序员失业后感慨:之前月薪2万,现在找5千的工作都没人要
  17. js 的push 方法
  18. [开源项目]_[C++ CSDN博客下载-CSDN博客导出-CSDN博客备份工具]
  19. 【手写源码-设计模式7】-桥接模式-基于苹果小米手机刷机场景
  20. 【题解】HNOI-2015落忆枫音

热门文章

  1. java这么实现OA审批功能
  2. Processing - 练习(3)飞碟追踪 - (渐进、延迟效果)
  3. 选购音箱的七个指标,你知道吗?
  4. vivo手机的便签批量导出到huawei手机备忘录
  5. ZoomIt 屏幕缩放演示软件 使用
  6. 绝地求生java雷达,绝地求生超级雷达工具
  7. Mandriva下载
  8. 戴森VR体验店:以科技开启未来无限可能 沉浸式购物场景,引领零售新体验
  9. 5.1.2 运输层的两个重要协议
  10. 信息学奥赛一本通:1085:球弹跳高度的计算