1 查看系統(tǒng)基本信息
1.1 確認(rèn)發(fā)行版
登錄到Linux服務(wù)器執(zhí)行 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 導(dǎo)出證書
keytool -export -alias sso_dtdream -keystore /root/keystore -file sso.crt
1.4 確認(rèn)Java版本和證書庫(kù)的位置
如下圖所示,確認(rèn)java的版本是1.8盯漂,證書庫(kù)的位置是/etc/pki/java/cacerts
1.5 確認(rèn)tomcat已經(jīng)正確安裝
如下圖所示,說(shuō)明tomcat已經(jīng)正確安裝储矩,版本號(hào)為7.0,且已經(jīng)正常啟動(dòng)和運(yùn)行褂乍。
1.6 其他準(zhǔn)備
需要如下文件:
cas.war: CAS服務(wù)的所有文件持隧,用來(lái)部署用的歸檔包。
keystore: 用來(lái)存儲(chǔ)證書私鑰和公鑰的證書庫(kù)文件
sso.crt: 用于在客戶端驗(yàn)證CAS Server的CA證書(此處指自簽名證書)
2 服務(wù)器端部署
2.1 配置證書庫(kù)
服務(wù)器端需要用證書庫(kù)中的私鑰來(lái)協(xié)商HTTPS通道逃片,還要從證書庫(kù)中取證書發(fā)送給客戶端進(jìn)行驗(yàn)證屡拨。這里需要將用到的證書庫(kù)放到合適的位置。以CentOS7為例褥实,我們需要先把keystore文件拷貝到一個(gè)可以訪問(wèn)的目錄呀狼,這里拷貝到/var/lib/tomcat目錄下,為了保證有訪問(wèn)權(quán)限损离,將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中制定先前配置的證書庫(kù)文件即可。
2.3 啟動(dòng)服務(wù)
將cas.war拷貝到tomcat的WEB服務(wù)目錄下僻澎,如/var/lib/tomcat/webapp
然后重啟tomcat服務(wù)貌踏,以CentOS7為例:
[root@iZ25gix959xZ ~]# service tomcat restart
3 客戶端部署
3.1 導(dǎo)入Server端證書
keytool -import -keystore "%JAVA_HOME%"\jre\lib\security\cacerts -file D:\server\ftp\sso_dtdream.crt -alias sso
上述命令將證書導(dǎo)入到Java的證書庫(kù)中,該證書主要用于驗(yàn)證CAS Server端發(fā)過(guò)來(lái)的證書怎棱,用于給CAS Client用的哩俭。 CAS Client主要包含在App Server中,本步驟只需要在APP server端來(lái)完成拳恋。
3.2 修改配置文件
APP server和CAS Server連接的時(shí)候會(huì)用HTTPS進(jìn)行通信凡资。以Tomcat為例,因?yàn)橛脕?lái)驗(yàn)證CAS Server服務(wù)器證書的證書庫(kù)即為%JAVA_HOME%下的cacerts谬运,不需要再做額外的配置隙赁,會(huì)自動(dòng)去cacerts去取證書驗(yàn)證CAS Server。
4 問(wèn)題
4.1 沒(méi)有找到算法的錯(cuò)誤
顯示信息如下:
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation
可以繼續(xù)向下看調(diào)用棧梆暖,可以看出原因應(yīng)該是讀證書庫(kù)的時(shí)候出錯(cuò)了伞访。
解決方法:
將truststoreFile="/usr/local/jdk1.8.0_45/jre/lib/security/cacerts" 修改為TruststoreFile="/etc/pki/java/cacerts"即可。推測(cè)原因是/usr/local/jdk1.8.0_45/jre/lib/security/cacerts這個(gè)目錄轰驳,tomcat沒(méi)有訪問(wèn)的權(quán)限厚掷。需要注意,/etc/pki/java/cacerts里面必須是一個(gè)可用的證書庫(kù)级解,不能是空文件或者鏈接文件冒黑。
4.2 訪問(wèn)/login/cas的時(shí)候提示404錯(cuò)誤
該錯(cuò)誤一般出現(xiàn)在Spring4.0以前的版本,Spring4.0的版本上不會(huì)出現(xiàn)這個(gè)錯(cuò)誤勤哗。
需要在
<bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter">
中添加下面的屬性:
<property name="filterProcessesUrl" value="/login/cas " />