CAS的安装与配置(一)服务器端配置

一、搭建Java Web服务器环境 

CATALINA_HOME = D:\Java\apache-tomcat-6.0.14 
安装完毕,启动Tomcat ,在浏览器上 测试 http://localhost:8080/ 
 
出现上述界面,表明系统成功搭建。 

二、使用Java Keytool工具为系统生成HTTPS证书,并为系统注册

1.  删除已有

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -delete -alias tomcat(随意起的别名) -keystore D:/Java/jdk1.6.0_33/jre/lib/security/cacerts -storepass changeit

2. 生成密匙库

输入密钥密码和相应参数,(注意:第一个参数CN要输入域名sso.shipengzhi.com,其他参数就随便了),结果是在用户目录中创建了名为server.keystore的密钥文件。

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -keystore server.keystore(密钥文件名)    

在当前目录下多出一个文件server.keystore 

3. 导出数字证书

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -export -alias tomcat -keypass changeit -file server.crt -keystore server.keystore

输入keystore密码:changeit

输入上一步中的密码,结果在当前目录生成server.crt密钥文件。(注意:这个文件是要导入客户端的JVM上的) 

4.将数字认证导入jre可信任区

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -import -alias tomcat -file server.crt -keypass changeit -keystore D:/Java/jdk1.6.0_33/jre/lib/security/cacerts

这里的jre地址和tomcat使用的jre必须一致

输入密码(注意:这里的密码不是上面设定的密码,而是changeit),将创建cacerts文件。

 

5. 查看可信证书列表(检查证书是否加入成功)

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -list -keystore D:\Java\jdk1.6.0_33/jre/lib/security/cacerts

6.命令解释(转)

-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书

-alias 产生别名

-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中

-keyalg 指定密钥的算法

-validity 指定创建的证书有效期多少天

-keysize 指定密钥长度

-storepass 指定密钥库的密码

-keypass 指定别名条目的密码

-dname 指定证书拥有者信息例如: "CN=firstName,OU=org,O=bj,L=bj,ST=gd,C=cn"

-list 显示密钥库中的证书信息 keytool -list -v -keystore 别名 -storepass ....

-v 显示密钥库中的证书详细信息

-export 将别名指定的证书导出到文件 keytool -export -alias 别名 -file 文件名.crt

-file 参数指定导出到文件的文件名

-delete 删除密钥库中某条目 keytool -delete -alias 别名 -keystore sage

-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 别名 -keypass .... -new .... -storepass ... -keystore 别名

-import 将已签名数字证书导入密钥库 keytool -import -alias 别名 -keystore 证书名-file 文件名(可以加.crt 后缀)

 

以上是服务器端导入证书,放在tomcat用的jre下的证书库中

 

三、配置Tomcat的HTTPS服务 

在tomcat的server.xml中添加配置信息 

<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:/Users/shipengzhi/server.keystore" keystorePass="changeit"
truststoreFile="D:/Java/jdk1.6.0_33/jre/lib/security/cacerts"
clientAuth="false" sslProtocol="TLS"/>

keystorePass="changeit"参数,即为上面几步中涉及到的密 码,keystoreFile=".keystorePath",.keystorePath即为在第一步中生成的文件.keystore的全路径,如: C:/Users/shipengzhi/server.keystore。

 

绑定hosts
10.1.164.118 sso.shipengzhi.com

启动Tomcat,访问https://localhost:8443/,出现以下界面说明HTTPS配置生效: 

 

四、构建CAS服务器和过滤器

1.部署JA-SIG(CAS)服务器 

cas官方网站

http://www.jasig.org/cas

下载最新的服务端 CAS Server 3.5.0 Final

解压后将modules下面的cas-server-webapp-3.3.3.war改名为cas.war部署到web服务器,作为单点登录的服务器。

启动Tomcat,访问网址http://localhost:8080/cas/index.jsp或https://localhost:8443,出现以下画面: 
 
输入用户名/密码 :linly/linly(任意两个相同的字窜),点击“登录”,出现以下画面: 
 
表示CAS服务器配置运行成功。 

2.为HelloWorldExample程序配置CAS过滤器 

访问http://shipengzhi:8080/examples/servlets/servlet/HelloWorldExample,出现以下界面说明应用正常启动: 
 
编辑D:\Java\apache-tomcat-6.0.14\webapps\examples\WEB-INF下的web.xml文件,添加如下信息: 

<!-- ======================== 单点登录开始 ======================== -->
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
<listener>
  <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
<filter>
  <filter-name>CAS Single Sign Out Filter</filter-name>
  <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CAS Single Sign Out Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>
  <filter-name>CASFilter</filter-name>
  <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  <init-param>
    <param-name>casServerLoginUrl</param-name>
    <param-value>https://sso.shipengzhi.com:8443/cas/login</param-value>
    <!--这里的server是服务端的IP-->
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://localhost:8080</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CASFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
  <filter-name>CAS Validation Filter</filter-name>
  <filter-class>
    org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
  <init-param>
    <param-name>casServerUrlPrefix</param-name>
    <param-value>https://sso.shipengzhi.com:8443/cas</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://localhost:8080</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CAS Validation Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ======================== 单点登录结束 ======================== -->


拷贝cas-client-core-3.2.1.jar,commons-logging-1.1.jar文件到目录D:\Java\apache-tomcat-6.0.14\webapps\examples\WEB-INF\lib下。 

启动Tomcat。 
测试使用浏览器登陆以下网址:http://shipengzhi:8080/examples/servlets/servlet/HelloWorldExample,页面将弹出以下认证框,点击“确定” 
 

页面将重定向到JA-SIG的SSO登录认证页面 

 

输入用户名=密码,如:linly/linly,则通过验证,进入应用的入口界面,如下: 
 

细心的用户将发现,此时的URL不再是: 
http://shipengzhi:8080/examples/servlets/servlet/HelloWorldExample, 
URL的尾端带上了一个ticket参数: 
http://linly:8080/examples/servlets/servlet/HelloWorldExample?ticket=ST-2-qTcfDrdFb0bWndWgaqZD 
到此,JA-SIG(CAS)服务器的初步SSO部署宣告成功。 

 异常Q&A

1.验证ticket时,抛出异常

avax.servlet.ServletException: 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

 解决办法:

 tomact使用的jvm的jre必须和数字认证导入jre可信任区时的jre一样,抛出这个异常就是因为不一样导致的。

2.如何将CAS和应用分布部署在不同的机器?

机器A: 部署CAS服务 
机器B: 部署OA应用 
机器C: 用户浏览器端 

1.由机器A上生成.keystore的证书文件,证书颁发者是机器A的完全域名 
2.机器A上用于部署CAS的Tomcat的server.xml文件中定义HTTPS的配置,指向.keystore文件证书 

3.从.keystore中导出的凭证文件要copy到机器B上,并导入机器B的JRE环境的证书库中 
4.机器B上部署OA的Tomcat必须指定运行在导入凭证JRE环境上,而不是JDK,这点常有人搞错。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某大型银行深化系统之十六:性能设计之一

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 1队列服务质量评估 通过引入排队系统&#xff0c;定义系统中各项业务流程的产生和业务服务模型&#xff0c;描述工作项产生规律和服务规律的概率来计算系统的性能。 在对排队进行分析时&#xff0c;…

Android之React native的介绍和入门指南

链接&#xff1a;http://zhuanlan.zhihu.com/FrontendMagazine/19996445数月前&#xff0c;Facebook 对外宣布了正在开发的 React Native 框架&#xff0c;这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天&#xff0c;Beta 版的仓库释出了&#xff01; 基于 P…

清华教授转述:读博6年未毕业被认定为自控力不够,或将影响个人贷款额度

全世界只有3.14 % 的人关注了爆炸吧知识图片来源&#xff1a;网络来源&#xff1a;募格课堂、微博人文清华、中国教育报、学位与写作据清华大学“人文清华”讲坛官方微博人文清华发布&#xff0c;清华大学公共管理学院院长江小涓教授在一次演讲中透露&#xff0c;互联网银行工作…

缕一缕c#可null类型

在古时候&#xff0c;引用类型是的默认值就是null&#xff0c;值类型是不可以赋值null的&#xff0c;所以那时候&#xff0c;“未将对象引用到实例”这个错误&#xff0c;是引用类型的。后来&#xff0c;值类型也可以赋值null了&#xff0c;只要在值类型变量定义的时候&#xf…

Android之Windows下搭建React Native Android开发环境(差不多搞了一天)

Android之Windows下搭建React Native Android开发环境 穷逼买不起mac,但是他们都说React Native Android只能在mac下面运行,然后到网上各种找资料看能不能在Windows下面搭建开发环境,找了几篇,但是讲得不够详细,没有图片,很虚,然后我用自己的小米手机尝试了…

这6部顶级数学纪录片,告诉你数学一点都不无趣!

全世界只有3.14 % 的人关注了爆炸吧知识丘成桐曾说&#xff0c;“中国数学发展很快&#xff0c;但距离欧洲和美国还有相当大的差距”&#xff0c;在美国排名前20的顶尖大学里&#xff0c;包括哈佛大学、普林斯顿大学、斯坦福大学、加州大学伯克利分校等&#xff0c;具有国际一流…

JAVA兔子繁衍_Java 编程经典案例之兔子繁殖迭代问题

题目有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问第6个月的兔子总数为多少&#xff1f;分析首先我们要明白题目的意思指的是每个月的兔子总对数&#xff1b;假设将…

C# GTS四轴运动控制器实例(固高科技步进电机不带编码器) -V1

注&#xff1a;由于电机不带编码器&#xff0c;无法做home和当前位置信息读取&#xff01;功能&#xff1a;三个轴的点位运动&#xff1a;前进后退&#xff0c;并分别显示每个轴的移动脉冲数(可以换算为距离)&#xff01;开发环境&#xff1a;VS2017硬件设备&#xff1a;固高科…

java基础巩固笔记(6)-注解

2019独角兽企业重金招聘Python工程师标准>>> java基础巩固笔记(6)-注解 标签&#xff1a; java [TOC] 注解&#xff08;Annotation&#xff09;&#xff0c;也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性&#xff0c;与类、接口、枚举是在同…

男人都能有多浪漫?

1 如何对付有拖延症的朋友&#xff01;▼2 男人能有多浪漫&#xff1f;&#xff08;via.MOM南菁&#xff09;▼3 现实版&#xff1a;别说话吻我&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 注入了灵魂的神作&#xff01;&#xff08;素材来源网络…

InfoQ —— 腾讯游戏大数据服务场景与应用

简介 周东祥&#xff0c;本人从2010年毕业进入腾讯互动娱乐部门工作&#xff0c;一直致力在腾讯游戏运营开发工作。先后负责SAP业务受理系统&#xff0c;盗号自助系统&#xff0c;元数据系统以及近2年在腾讯游戏大数据运营开发中积累大量的大数据开发与应用经验。 介绍 数据采集…

美国人竟然花10年时间研究夫妻那些事!网上的那些传言竟然是真的......

全世界只有3.14 % 的人关注了爆炸吧知识恋爱变胖是真的爱你也是有一天超模君看到个新闻&#xff0c;某女网友在微博里发了一张秀恩爱照片&#xff0c;这次没有像往日一样收到柠檬精的艳羡&#xff0c;相反评论区一片静默。。。某女网友晒出老公四年的巨大变化图by微博一个阿呆仔…

Java常用的知识点就20_JAVA中一些需要记录的知识点

原标题&#xff1a;JAVA中一些需要记录的知识点的老师今天给大家讲java中一些重要的知识点。JDK与JRE的区别&#xff1a;JRE是所有JAVA程序运行所需要的环境&#xff0c;任何JAVA程序的运行都依赖于JRE&#xff0c;当前从JAVA官网选择安装JAVA即安装的是JRE。JDK是为开发人员所…

可以自发热的袜子,穿上暖3.9℃,这个冬天不再怕脚冷!

▲点击查看最近天气一天比一天冷&#xff0c;相信盆友们和小爆一样已经囤了不少保暖用品&#xff0c;秋衣秋裤棉拖鞋都安排好了&#xff01;等等&#xff0c;是不是有什么重要东西忘记了&#xff1f;平时出门&#xff0c;好像不穿棉拖鞋啊&#xff01;哎&#xff0c;还缺了一打…

QML的import目录爬坑记录

为什么80%的码农都做不了架构师&#xff1f;>>> 默认添加在.qrc文件里的同目录下qml文件&#xff0c;不需要添加import声明&#xff1b; 想导入自定义的组件&#xff1b; //只需要import到目录即可, //注意是qml组件文件所在的目录 import "./Dir" 但是…

收集css属性.

为什么80%的码农都做不了架构师&#xff1f;>>> body:before {content: "";position: fixed;top: -10px;left: 0;width: 100%;height: 10px;box-shadow: 0px 0px 10px rgba(0,0,0,.8);z-index: 100; } 浏览器头部阴影不支持ie .clearfix:after {clear: b…

mysql相交_MySQL相交

MySQL的相交INTERSECT运算符是SQL中的一种SET操作&#xff0c;包括UNION&#xff0c;UNION ALL&#xff0c;MINUS和INTERSECT。 INTERSECT运算符从两个或多个表中返回两组或公共记录中的不同(公共)元素。换句话说&#xff0c;它比较两个查询获得的结果并产生唯一的行&#xff0…

年轻人也太禁不起诱惑了吧?

1 好喝就够了&#xff01;▼2 为啥乌布雷纹了一个张译&#xff1f;&#xff01;▼3 美伢&#xff1a;小新&#xff0c;把我法宝拿来&#xff01;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 注入了灵魂的神作&#xff01;&#xff08;素材来源网络&#xff0c…

认清几种视频接口标准---无私奉献版

VGA&#xff0c;DVI和HDMI是三种视频传输标准&#xff0c;从而形成了以三种标准为基础的三种接口。所以他们是标准名称也是接口名称。在现在我们的计算机和电视设备上经常能见到。甚至有的显卡和显示器是三个接口共存的。大家对着三个名词并不陌生&#xff0c;尤其是VGA更是耳熟…

红黑树数据结构剖析

红黑树数据结构剖析红黑树是计算机科学内比较常用的一种数据结构&#xff0c;它使得对数据的搜索&#xff0c;插入和删除操作都能保持在O(lgn)的时间复杂度。然而&#xff0c;相比于一般的数据结构&#xff0c;红黑树的实现的难度有所增加。网络上关于红黑树的实现资料汗牛充栋…