1. 程式人生 > >CAS SSO 配置

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