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…

mysql 堆叠查询_SQL 注入方法 - 盲注、报错注入、UNION查询注入与堆叠注入

盲注关键点是 根据页面返回内容分析 Payload 中的问题是否为真&#xff0c;然后通过多次测试遍历出想要的数据布尔盲注目标地址&#xff1a;http://newspaper.com/items.php?id2对应的SQL语句&#xff1a;SELECT title, description, body FROM items WHERE ID 2然后攻击者尝…

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

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

缕一缕c#可null类型

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

[原]NYOJ-开灯问题-77

大学生程序代写 //http://acm.nyist.net/JudgeOnline/problem.php?pid77/*题目77题目信息运行结果本题排行讨论区开灯问题时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;1描述有n盏灯&#xff0c;编号为1~n&#xff0c;第1个人把所有灯打开&a…

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;假设将…

检查可执行文件所需要的共享库

1.3 ldd 和 ldconfigldd 是用来检查可执行文件所需要的共享库。例如&#xff1a;$ ldd /bin/lslibtermcap.so.2 > /lib/libtermcap.so.2 (0x4001c000)libc.so.6 > /lib/libc.so.6 (0x40020000)/lib/ld-linux.so.2 > /lib/ld-linux.so.2 (0x40000000)我们在 /bin/ls 程…

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

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

node.js npm常用命令

npm是一个node包管理和分发工具&#xff0c;已经成为了非官方的发布node模块&#xff08;包&#xff09;的标准。有了npm&#xff0c;可以很快的找到特定服务要使用的包&#xff0c;进行下载、安装以及管理已经安装的包。 1、npm install moduleNames&#xff1a;安装Node模块 …

编程珠玑第三章

第三章的总的原则&#xff1a; 1.将重复性代码改到数组中&#xff0c;使用最简单的数据结构---数组来表示一段冗长的相类似的代码往往可以达到最佳效果 2.封装复杂的结构时&#xff0c;使用抽象的术语对她进行定义&#xff0c;并将那些操作表示成一个类。 3.尽可能地使用高级工…

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;素材来源网络…

在业务层实现记录请求日志

前言上次&#xff0c;我们介绍了如何《在业务层实现响应缓存》。今天&#xff0c;我们同样使用IPipelineBehavior&#xff0c;介绍如何在业务层实现记录请求日志&#xff0c;用于跟踪每个请求执行的耗时。Demo创建ASP.NET Core Web API项目&#xff0c;引用Nuget包&#xff1a;…

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

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

如何加强测评机构自身的规范化管理, 不断提高测评的能力和水平

0&#xff0e;引言 随着用户消费习惯从产品转向服务&#xff0c;服务已经成为企业向客户提供的主要商品。而等级保护测评服务作为信息系统建设的新要素&#xff0c;用户对信息安全等级保护测评服务&#xff08;以下简称服务&#xff09;的认同会影响用户的消费行为。对于信息安…

气溶胶光学厚度反演的两种方式(卫星探测和基地观测反演)

基地观测反演&#xff1a;目前在地基大气气溶胶光学特性遥感方面&#xff0c;太阳光度计测量是应用较多也是最为可靠的一种测量方法&#xff0c;太阳光度计除了可以用于地基观测太阳直接辐射通量外&#xff0c;还可以用来观测天空各方向上的辐射反演气溶胶粒子的谱分布和散射相…

Android之React Native平台与Android本地模块之间的调用

Native 模块(Android) 有时候APP需要做出React Native平台没有的功能,你也许会想用一些存在的java代码去解决问题,而不是用javascript脚本去去解决问题,或许写一些高性能,多线程的代码,列如图片处理,数据库,或者任何先进的继承 我们设计Reac…