CAS SSO 配置
其實網上這樣的資料google一下一大把,本來是不想再做重複無謂的東西,但是實在是忍不住的發幾句牢騷,寫東西是給別人分享經驗的,需要好好的去偽存真。軟體在不斷的升級,用法也會不斷的改進,不要一直用老版本的方法在新版本上面使用,不但對別人幫助不大,反而會耽誤時間,還不如直接去官網翻英文文件,即便是痛苦些,也比拿到過時的東西好呀,看看網上的實現大部分都是那個2.x和3.x的cas混用,但是這樣自己不覺得不合理麼,現在JASIG上面根本沒有yelu的包,在配置客戶端的時候還要配置yelu什麼的,不說廢話了,把新版本的用法貼出來,希望其他童靴不要再和俺一樣走彎路。
生成證書:
1,生成數字證書
./keytool -genkey -alias examplecas -keypass changeit -keyalg RSA -keystore server.keystore
2,匯出數字證書
./keytool -export -alias examplecas -keypass changeit -file server.crt -keystore server.keystore
3,將數字證書匯入jre的可信區
./keytool -import -alias examplecas -file server.crt -keypass changeit -keystore ../jre/lib/security/cacerts
其他的一些命令:
檢視可信證書列表(檢查證書是否加入成功)
./keytool -list -keystore ../jre/lib/security/cacerts
常用命令:
-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 字尾)
注意:
1,生成數字證書的時候必須使用主機名或者域名作為證書名稱(CN),
例如sso.example.com(CN=sso.example.com, OU=example, O=example, L=beijing, ST=beijing, C=china)
2,檢查JAVA_HOME環境變數(echo $JAVA_HOME),確認tomcat使用了那一個jre(有時候一臺機器上會有
多個jre),需要將生成的證書檔案匯入至web伺服器使用的那個jre的信任證書列表中,可以使用keytool -list
命令檢查證書是否匯入成功。
搭建環境:
伺服器端:cas-server-webapp-3.4.2.war
客戶端:cas-client-3.1.10(做簡單的演示只需要modules下的cas-client-core-3.1.10.jar和commons- logging-1.1.jar就行了,不需要2.x下面的東西)
JDK:jdk1.6.0_10
tomcat:apache-tomcat-6.0.26
首先、如果啟用https那麼就先用keytool生成下證書,匯入到tomcat所用的JDK證書中,這些資料很多就不做詳細說明了,只把可能遇到的問題寫下
1、keytool 不支援有空格的檔案路徑,特別是在匯入證書的時候要注意
2、匯入證書的時候密碼是預設的changit而不是自己證書的密碼
3、tomcat5.x和tomcat6.x啟用SSL的方式不一樣
6.x的方式(單項認證)
其次、搭建CAS伺服器,這個沒什麼特別的東西,把war放到webapp中就行了
最後、客戶端的搭建,
1、把cas-client-core-3.1.10.jar和commons-logging-1.1.jar放到應用系統的lib中。
2、在web.xml增加以下配置:
3、應用中得到通過CAS認證使用者的方法
本文轉自:http://utopiasky.javaeye.com/blog/709794