CAS_SSO單點登錄實例詳細步驟(轉)、Tomcatssl(https)配置
(Central Authentication Service)
http://desert3.iteye.com/blog/1700335
http://www.mossle.com/docs/auth/html/ch103-cas.html
第一步
1、用keytool生成證書:
命令:
keytool -genkey -alias sjc-keyalg RSA -keystore c:/store/mykey
說明:
這裏-alias sjc是表示生成的這個證書的別名叫sjc,-keyalgRSA 指的是採用的RSA算法,-keystorec:/store/mykey是指生成的證書存儲的位置。回車後會提示你輸入keystorepassword,這可以自己定(這裏輸入sunjuncai,下面配tomcat時要用的),然後是一些個人信息及組織信息,可以輕鬆搞定。
注意:密碼輸入後,會讓你輸入其他信息,記得這裏第一個姓名必須是服務器的域名這裏我輸入的是完整計算機名稱:gaofeng.nmc.hamcc
這裏要注意如果不這樣寫就會報如下異常:
java.io.IOException: HTTPS hostname wrong: should be<localhost>
實戰:
C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc-keyalg RSA -keystore c:/store/mykey
輸入keystore密碼: sunjuncai
您的名字與姓氏是什麼?
[Unknown]: gaofeng.nmc.hamcc
您的組織單位名稱是什麼?
[Unknown]: 上海神洲數港
您的組織名稱是什麼?
[Unknown]: 網絡優化
您所在的城市或區域名稱是什麼?
[Unknown]: 鄭州
您所在的州或省份名稱是什麼?
[Unknown]: 河南
該單位的兩字母國家代碼是什麼
[Unknown]: ZH
CN= gaofeng.nmc.hamcc, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=ZH 正確嗎?
[否]: y
輸入<sjc>的主密碼
(如果和 keystore密碼相同,按回車):
2、創建證書後,就導出證書:
命令:
keytool -export -file c:/store/server.crt -alias sjc -keystore c:/store/mykey
說明:
從c:/store/mykey裏取出證書入到c:/store/下,如果沒有指定,就是存放在目錄下C:\Documentsand Settings\用戶目錄名\
實戰:
C:\Documents and Settings\wangyoushi8>keytool -export -filec:/store/server.crt -alias sjc -keystore C:/store/mykey
輸入keystore密碼: sunjuncai
保存在文件中的認證 <c:/store/server.crt>
3、爲客戶端的JVM導入密鑰:
命令:
keytool -import -keystoreD:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc
說明:
注意:輸入密碼時密碼爲"changeit",這是默認密碼.
特別說明:這個D:/jdk1.5.0_12/jre/lib/security/cacerts是指JDK的JRE路徑下的lib目錄.
至此,第一步完成。
實戰:
C:\Documents and Settings\wangyoushi8>
keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts-file c:/store/server.crt -alias sjc
輸入keystore密碼: changeit
Owner: CN=localhost, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=Zh
發照者: CN=localhost, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=Zh
序號: 4abd6dd0
有效期間: Sat Sep 26 09:26:40 CST 2009至: Fri Dec 25 09:26:40 CST 2009
認證指紋:
MD5: F7:19:E9:F8:53:08:B0:15:E7:A4:46:6D:1E:8A:F4:2B
SHA1: 09:ED:CF:67:D0:F5:C0:A4:96:1D:B1:A3:68:D3:2C:9F:FF:1B:7F:DE
信任這個認證? [否]: y
認證已添加至keystore中
第二步
修改服務端Tomcat配置文件,(Tomcat安裝路徑下的conf/server.xml使用編輯工具顯示行號在95行處取消註釋)即可啓用SSL如下:
<Connector port="8443"maxHttpHeaderSize="8192"
maxThreads="150"minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"disableUploadTimeout="true"
acceptCount="100" scheme="https"secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="c:/store/mykey"
keystorePass="sunjuncai"/>
只需修改綠色部分。
完成以上兩步,測試一下:
重啓Tomcat後在地址欄輸入:https://localhost:8443如果瀏覽器顯示:
可以把localhost用本機IP地址,如https://10.87.59.162:8443/試試。如果配置正確就搞定了,瀏覽顯示的時候提示安裝證書。瀏覽器的狀態欄會顯示如圖所示:
解決辦法:
a.查看Host文件,c:\windows\system32\drivers\etc\hosts,打開hosts這個文件,看看127.0.0.1和localhost是不是在一行。
b.是否用了代理服務器上網,選中“對於本地址不使用代理服務器。”
第三步
部署CAS應用
a.CAS服務端的配置
CAS Server的下載http://www.jasig.org/cas/download
CAS Server安裝
把\cas-server-3.3.3-release\cas-server-3.3.3\modules\cas-server-webapp-3.3.3.warcopy到tomcat\webapps下重命名爲cas;
重啓Tomcat後,,檢查 CAS應用是否正常啓動。在地址欄輸入:https://localhost:8443/cas如瀏覽器顯示:
默認的casserver的驗證是隻要用戶名和密碼一樣就可以成功登錄。如圖:
b.CAS客戶端配置
CAS Client的下載 http://www.ja-sig.org/downloads/cas-clients/
把 \cas-client-java-2.1.1\dist\casclient.jarcopy到你所發佈的webapp的WEB-INF/lib下
在客戶端web應用中修改WEB-INF/web.xml在裏面添加過濾器
<!--用於單點退出 -->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
<filter-name>CASSingle Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<!-- 用於單點登錄 -->
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://localhost:8443/cas/login</param-value>
<!--這裏的server是服務端的IP-->
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://gaofeng.nmc.hamcc:8443/cas/proxyValidate</param-value>
<!--這裏的ServerName是服務端的主機名也就是CN-->
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8080</param-value>
<!--client:port就是需要cas需要攔截的地址和端口,一般就是這個tomcat所啓動的ip和port-->
</init-param>
</filter>
<filter-mapping>
<filter-name>CASSingle Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
到此爲止,基本配置已經告一段落。(完成),如遇到什麼問題,請致信給:Todaysjc.
定製和擴展1:通過直接訪問數據庫定製密碼驗證
1.新建Mysql數據庫cas,筆者的數據庫用戶名是root,密碼爲空。新建文本文件,命名爲cas.sql
/*
MySQL Data Transfer
Source Host: localhost
Source Database: cas
Target Host: localhost
Target Database: cas
Date: 2009-10-9 18:08:58
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username` varchar(255) NOTNULL,
`password` varchar(255) NOTNULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `user` VALUES ('1', '1');
2. 加入包到webapps\cas\WEB-INF\lib:
mysql-connector-java-5.1.5-bin.jar
cas-server-support-jdbc-3.3.1.jar(來自於cas-server-3.3.1.zip)
spring-jdbc-2.5.5.jar
3. 在webapps\cas\WEB-INF\deployerConfigContext.xml文件中加入dateSource的Bean
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/cas</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value></value></property>
</bean>
4. 在deployerConfigContext.xml文件中
註釋掉:
<beanclass="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePassword
AuthenticationHandler" />
換成:
<beanclass="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<propertyname="dataSource" ref="casDataSource" />
<property name="sql" value="select password from user where username=?" />
<propertyname="passwordEncoder" ref=" passwordEncoder "/>
</bean>
參考網址:
Keytool詳細講解http://www.infosecurity.org.cn/article/pki/case/23823.html
Java、咖啡與茶http://linliangyi2007.javaeye.com/blog/165307 (推薦)學習筆記一
http://linliangyi2007.javaeye.com/blog/165310 學習筆記二
http://linliangyi2007.javaeye.com/blog/165313 學習筆記三
扭曲的鉛筆 http://www.blogjava.net/naruke/archive/2008/08/12/161551.html配置(上)
http://www.blogjava.net/naruke/archive/2007/11/19/161574.html配置(下)
Pocky的工作室
http://hi.baidu.com/zh_m_zhou/blog/item/a6236da5765bd6f09052ee8f.html/cmtid/a292b6ecbe99b04579f05516(上篇)
http://hi.baidu.com/zh%5Fm%5Fzhou/blog/item/a56123071aeae77c02088196.html(下篇)
使用 J2EE Policy Agent保護應使用程序
http://www.cqzol.com/programming/J2EEJ2ME/200812/273824.html
WZK網址庫 |
Spring Framework開發參考手冊 http://www.redsaga.com/spring_ref/2.0/html/
51視窗 http://www.51windows.net/hw/asp/
維護記錄:
安全證書到期,訪問時瀏覽器顯示:
只對第一步的<3>爲客戶端的JVM導入密鑰:做一個別名修改sjc改爲sjc1987
C:\Documents and Settings\wangyoushi8>keytool -import -keystoreD:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -aliassjc1987
輸入keystore密碼: changeit
Owner: CN=gaofeng.nmc.hamcc, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=ZH
發照者: CN=gaofeng.nmc.hamcc, OU=上海神洲數港, O=網絡優化, L=鄭州, ST=河南, C=ZH
序號: 4b3b122d
有效期間: Wed Dec 30 16:41:17 CST 2009至: Tue Mar 30 16:41:17 CST 2010
認證指紋:
MD5: 80:6C:C1:02:B3:6C:BC:F3:A3:B9:EA:69:22:13:56:5A
SHA1:97:33:73:8A:07:0C:B9:49:4E:4B:58:74:4D:FE:20:25:E0:1B:12:D1
信任這個認證? [否]: y
認證已添加至keystore中