最近因為用CAS做單點登入,需要配置SSL,過程是比較簡單的,記錄下各個步驟的含義,以免日後忘記。
需求情境:CAS單點登入,要求必須是SSL,伺服器作業系統為CentOS,web容器為tomcat。
如果你作為服務提供者,那你需要看完全文
如果你作為需求客戶方,那隻需要看第三部分就可以了
步驟:
假設我們tomcat的路徑為/opt/tomcat,在此目錄下建立ssl目錄用於存放認證:
cd /opt/tomcat/ssl
一、首先,我們需要產生SSL認證,用到keytool工具,關鍵有三步:
①產生keystone,用以下命令
#keytool -genkey -alias ssologin -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3650
註:changeit是jdk中認證預設的密碼
②從keysotre中匯出別名為tomcat-cas-server的認證,產生server.crt檔案
#keytool -export -trustcacerts -alias ssologin -file server.crt -keystore server.keystore -storepass changeit
③將server.crt匯入到jre的可信任認證倉庫
#keytool -import -trustcacerts -alias ssologin -file server.crt -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
注意:如果是windows主機,使用%JAVA_HOME%,如果是linux就使用$JAVA_HOME
二、配置好認證之後,我們需要配置tomcat支援SSL
修改conf/server.xml檔案,其中SSL部分如下,其它不用動:
<Connector port="443" protocol="HTTP/1.1"
connectionTimeout="5000" URIEncoding="UTF-8"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/opt/tomcat/ssl/server.keystore"
keystorePass="changeit"/>
修改後之後,重啟tomcat即可生效
再正式訪問之前,記得把防火牆的443連接埠開啟,centos的iptables配置如下:
#vi /etc/sysconfig/iptables
添加以下配置:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
配置完之後記得重啟iptables:
#service iptables restart
iptables重啟之後,你就可以通過瀏覽器訪問了https://your.domain.com
三、tomcat作為SSL的用戶端
如果我們的應用作為用戶端需要與開啟SSL的伺服器進行通訊,那我們必須將伺服器憑證安裝在jre的可信列表中.
具體步驟是:將上述第一步中的第②小步產生的server.crt分發給需要使用的用戶端,然後在用戶端用keytool工具匯入到jre的可信列表,如下命令:
#keytool -import -trustcacerts -alias ssologin -file server.crt -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
注意:我這裡的機器是windows機器,所以使用%JAVA_HOME%,其實這個匯入處理程序和一.③是一樣的
四、其它可能會用到的認證相關命令
①列出系統倉庫中存在的認證名稱:
#keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
如本文中添加的認證,會找到這麼一行
ssologin, 2014-9-4, trustedCertEntry,
認證指紋 (MD5): 12:3B:02:6F:78:6E:A6:D3:AB:96:CA:63:7D:7B:55:04
②消除系統中存在的名為ssologin的認證
#keytool -delete -alias ssologin -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
#keytool -delete -alias ssologin -storepass changeit