安裝 CAS 服務器
1 下載 CAS 服務器
可以從 CAS 官網:http://www.jasig.org/cas 下載,這可能需國內或許不能訪問,如果你不太愿意KX上網的話,可以訪問這個地址:http://downloads.jasig.org/cas/,同樣可以下載。
-
下載 CAS 服務器最新版:cas-server-3.5.2-release.zip
-
解壓程序包
-
復制 cas-server-3.5.2/modules/cas-server-webapp-3.5.2.war 到 Tomcat 的 webapps 目錄下,并重命名為 ROOT.war。
在啟動 Tomcat 之前,還需要做兩件事情:
-
創建 CAS 密鑰庫
-
使 Tomcat 支持 HTTPS
2 創建 CAS 密鑰庫
使用 JDK 的 keytool 命令生成密鑰庫(keystore),其實就是一份 keystore 文件,keystore 必須通過密碼才能訪問。
keystore 里包含了多個密鑰對(keypair),每個 keypair 都有一個別名(alias),alias 必須保證唯一性,而且都有一個密碼,有此可知,keystore 與 keypair 都有自己的密碼。
JDK 也有自己的 keystore,位于 %JAVA_HOME%\jre\lib\security\cacerts,其密碼就是 changeit,當然也可以通過 keytool 命令來修改。
我們首先生成 keypair 及其存放 keypair 的 keystore,然后從 keystore 里導出證書,最后將證書導入 JDK 的 keystore 里,Tomcat 在運行時就會自動讀取 JDK 的 keystore,以確保所部署的應用可以享受 HTTPS 協議(SSL 通道)帶來的安全性。
2.1 生成 keypair
使用以下命令生成密鑰對:
keytool -genkeypair -alias cas -keyalg RSA -storepass changeit
默認情況下,生成的 keystore 就是用戶目錄下的 .keystore 文件。對于 Win8 而言,默認的用戶目錄為 C:\Users\用戶名。
以上命令執行完畢后,會在用戶目錄下生成一份 .keystore 文件(如果以前不存在該文件的話),其中包括一個 keypair。
注意:
-
為了簡化操作,建議 keystore 與 keypair 的密碼相同,且均為 changeit。
-
提示“您的名字與姓氏是什么?”,這里需要輸入一個域名,例如:www.xxx.com,本例中輸入 cas 需要在 hosts 文件中做如下映射:
127.0.0.1 cas
查看 keypair:
keytool -list -storepass changeit
刪除 keypair:
keytool -delete -alias <別名> -storepass changeit
2.2 從 keystore 中導出證書
使用以下命令導出證書:
keytool -exportcert -alias cas -file cas.crt -storepass changeit
生成的證書文件為 cas.crt,位于運行該命令所在的當前目錄下。
可雙擊該證書文件,將該證書安裝到“受信任的根證書頒發機構”中,這樣在瀏覽器中使用 HTTPS 協議訪問時才不會出現一個紅色的叉叉。
2.3 導入證書到 JVM 中
使用以下命令導入證書到 JVM 的 keystore 中:
keytool -importcert -alias cas -file cas.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -noprompt
默認情況下,Tomcat 將讀取 JVM 中的密鑰庫,而不是用戶目錄下的 .keystore 密鑰庫,當然也可以配置 Tomcat 使其讀取指定的密鑰庫(見附錄)。
注意:
-
在執行以上命令前,必須需要保證 cacerts 文件對當前用戶有寫權限。
-
JDK 的 keystore 的密碼必須為 changeit,這樣 Tomcat 無需做任何配置就能訪問。
3 使 Tomcat 支持 HTTPS
打開 Tomcat 的 conf/server.xml 文件。
修改以下配置:
... <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" /> ...
將以上配置中的 SSLEngine 改為 off,默認為 on。
... <!--<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="18443" />--> ... <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> ... <!--<Connector port="8009" protocol="AJP/1.3" redirectPort="18443" />--> ...
禁用 HTTP 8080 端口,開啟 HTTPS 8443 端口,禁用 AJP 8009 端口,以確保只能通過 HTTPS 協議訪問 CAS 服務器。
4 運行 CAS 服務器
啟動部署了 CAS 服務器的 Tomcat,并使用以下地址訪問 CAS 登錄頁面:
https://cas:8443/login
一定要使用域名 cas 來訪問,實際上 cas 指向了 127.0.0.1(需要在本機的 hosts 中進行配置)。
CAS 默認采用了最簡單的認證,即用戶名與密碼必須有,但兩者必須相同,也可對 CAS 做個性化認證配置。
注銷 CAS:
https://cas:8443/logout
如何應用 CAS 實現單點登錄?如何定制 CAS 的認證方式?如何將 CAS 集成到 Smart 框架中?下回分解!