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,這點常有人搞錯。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM