登陸到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: NahantUpdate1java
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/keystoreweb
注意密碼用changeit算法
keytool -export -alias sso_dtdream -keystore /root/keystore -file sso.crtspring
以下圖所示,確認java的版本是1.8,證書庫的位置是/etc/pki/java/cacertsapache
以下圖所示,說明tomcat已經正確安裝,版本號爲7.0,且已經正常啓動和運行。tomcat
須要以下文件:服務器
cas.war: CAS服務的全部文件,用來部署用的歸檔包。app
keystore: 用來存儲證書私鑰和公鑰的證書庫文件webapp
sso.crt: 用於在客戶端驗證CAS Server的CA證書(此處指自簽名證書).net
服務器端須要用證書庫中的私鑰來協商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
以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中制定先前配置的證書庫文件便可。
將cas.war拷貝到tomcat的WEB服務目錄下,如/var/lib/tomcat/webapp
而後重啓tomcat服務,以CentOS7爲例:
[root@iZ25gix959xZ ~]# service tomcat restart
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端來完成。
APP server和CAS Server鏈接的時候會用HTTPS進行通訊。以Tomcat爲例,由於用來
驗證CAS Server服務器證書的證書庫即爲%JAVA_HOME%下的cacerts,不須要再作額外的配置,會自動去cacerts去取證書驗證CAS Server。
顯示信息以下:
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裏面必須是一個可用的證書庫,不能是空文件或者連接文件。
該錯誤通常出如今Spring4.0之前的版本,Spring4.0的版本上不會出現這個錯誤。
須要在
<bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"> 中添加下面的屬性:
<property name="filterProcessesUrl" value="/login/cas " />