1 查看系統基本信息
1.1 確認發行版
登錄到Linux服務器執行 lsb_release -a ,即可列出所有版本信息,例如:
[root@3.5.5Biz-46 ~]# lsb_release -a
LSB Version: 1.3
Distributor ID: RedHatEnterpriseAS
Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 1)
Release: 4
Codename: NahantUpdate1
1.2 生成證書
keytool -genkey -keyalg RSA -dname CN=10.160.5.242 -ext san=ip:10.160.5.242 -alias sso_dtdream -keysize 1024 -validity 730 -keypass changeit -keystore /root/keystore
注意密碼用changeit
1.3 導出證書
keytool -export -alias sso_dtdream -keystore /root/keystore -file sso.crt
1.4 確認Java版本和證書庫的位置
如下圖所示,確認java的版本是1.8,證書庫的位置是/etc/pki/java/cacerts
1.5 確認tomcat已經正確安裝
如下圖所示,說明tomcat已經正確安裝,版本號為7.0,且已經正常啟動和運行。
1.6 其他准備
需要如下文件:
cas.war: CAS服務的所有文件,用來部署用的歸檔包。
keystore: 用來存儲證書私鑰和公鑰的證書庫文件
sso.crt: 用於在客戶端驗證CAS Server的CA證書(此處指自簽名證書)
2 服務器端部署
2.1 配置證書庫
服務器端需要用證書庫中的私鑰來協商HTTPS通道,還要從證書庫中取證書發送給客
戶端進行驗證。這里需要將用到的證書庫放到合適的位置。
以CentOS7為例,我們需要先把keystore文件拷貝到一個可以訪問的目錄,這里拷貝到/var/lib/tomcat目錄下,為了保證有訪問權限,將owner和group都修改為tomcat:
[root@iZ25gix959xZ ~]# cp keystore /var/lib/tomcat
[root@iZ25gix959xZ ~]# chown tomcat /var/lib/tomcat/keystore
[root@iZ25gix959xZ ~]# chgrp tomcat /var/lib/tomcat/keystore
2.2 修改配置文件
以CentOS中配置tomcat為例,修改/etc/tomcat/server.xml文件:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/var/lib/tomcat/keystore" keystorePass="changeit"
truststoreFile="/usr/local/jdk1.8.0_45/jre/lib/security/cacerts"/>
其中keyStoreFile中制定先前配置的證書庫文件即可。
2.3 啟動服務
將cas.war拷貝到tomcat的WEB服務目錄下,如/var/lib/tomcat/webapp
然后重啟tomcat服務,以CentOS7為例:
[root@iZ25gix959xZ ~]# service tomcat restart
3 客戶端部署
3.1 導入Server端證書
keytool -import -keystore "%JAVA_HOME%"\jre\lib\security\cacerts -file D:\server\ftp\sso_dtdream.crt -alias sso
上述命令將證書導入到Java的證書庫中,該證書主要用於驗證CAS Server端發過來的證書,用於給CAS Client用的。
CAS Client主要包含在App Server中,本步驟只需要在APP server端來完成。
3.2 修改配置文件
APP server和CAS Server連接的時候會用HTTPS進行通信。以Tomcat為例,因為用來
驗證CAS Server服務器證書的證書庫即為%JAVA_HOME%下的cacerts,不需要再做額外的配置,會自動去cacerts去取證書驗證CAS Server。
4 問題
4.1 沒有找到算法的錯誤
顯示信息如下:
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation
可以繼續向下看調用棧,可以看出原因應該是讀證書庫的時候出錯了。
解決方法:
將truststoreFile="/usr/local/jdk1.8.0_45/jre/lib/security/cacerts" 修改為
TruststoreFile="/etc/pki/java/cacerts"即可。推測原因是/usr/local/jdk1.8.0_45/jre/lib/security/cacerts這個目錄,tomcat沒有訪問的權限。需要注意,/etc/pki/java/cacerts里面必須是一個可用的證書庫,不能是空文件或者鏈接文件。
4.2 訪問/login/cas的時候提示404錯誤
該錯誤一般出現在Spring4.0以前的版本,Spring4.0的版本上不會出現這個錯誤。
需要在
<bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"> 中添加下面的屬性:
<property name="filterProcessesUrl" value="/login/cas " />