前言
由於個人的興趣和為了加薪,在這里研究下cas單點登錄,同時也記錄下自己探索的過程,希望也能幫到有同樣興趣的小伙伴
環境
CAS-5.1.3
tomcat8.5
jdk8
centos6.5
1、生成服務器的密匙文件tomcat.keystore
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -validity 36500 -keystore /usr/local/certificate/tomcat.keystore
參數說明
- -genkey 生成密鑰
- -keyalg 指定密鑰算法,這時指定RSA,
- -keysize 指定密鑰長度,默認是1024位,這里指定2048,長一點,比較難破解,
- -validity 指定證書有效期,這里指定36500天,我想我的應用用不到那么長時間
- -alias 指定別名,這里是tomcat
- -keystore 指定密鑰庫存儲位置,這里存在/usr/local/certificate/目錄下
注意:您的名字與姓氏www.jacky.sso.com是CAS服務器使用的域名,不是隨便亂定的,其他的隨意
2、導出證書
[root@jacky certificate]# ls tomcat.keystore [root@jacky certificate]# keytool -export -alias tomcat -storepass 123456 -file tomcat.cer -keystore tomcat.keystore 存儲在文件 <tomcat.cer> 中的證書 [root@jacky certificate]# ls tomcat.cer tomcat.keystore
然后發現certificate目錄下多了一個tomcat.cer的文件,表示導出證書成功
參數說明
- -alias指定別名為tomcat;
- -storepass指定私鑰為123456;
- -file指定導出證書的文件名為tomcat.cer;
- -keystore指定之前生成的密鑰文件的文件名。
注意:-alias和-storepass必須為生成tomcatekeystore密鑰文件時所指定的別名和密碼,否則證書導出失敗
3、導入證書導入到jdk信任庫
[root@jacky security]# keytool -import -alias tomcat -keystore $JAVA_HOME/jre/lib/security/cacerts -file /usr/local/certificate/tomcat.cer -trustcacerts 輸入密鑰庫口令: 再次輸入新口令: 所有者: CN=www.jacky.sso.com, OU=jacky, O=jacky, L=GuangZhou, ST=GuangDong, C=Zh 發布者: CN=www.jacky.sso.com, OU=jacky, O=jacky, L=GuangZhou, ST=GuangDong, C=Zh 序列號: f7508f7 有效期開始日期: Tue Nov 07 07:00:15 CST 2017, 截止日期: Thu Oct 14 07:00:15 CST 2117 證書指紋: MD5: BC:F8:ED:14:B5:64:31:65:BF:E2:FC:78:81:C1:1A:69 SHA1: E7:CE:2B:F9:10:53:74:1B:6C:68:F7:15:5D:3E:DC:ED:83:B6:28:4A SHA256: B3:DD:F6:B2:0F:75:53:FD:1A:8D:69:2A:F6:2A:BC:18:A8:4A:20:62:1F:1F:23:D6:A0:70:AE:0A:56:3D:D2:3A 簽名算法名稱: SHA256withRSA 版本: 3 擴展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: A2 D1 05 CF 7D F5 3A 6A 7D BD 2C DD EF 9F A6 9D ......:j..,..... 0010: 09 CC D8 63 ...c ] ] 是否信任此證書? [否]: y 證書已添加到密鑰庫中 [root@jacky security]#
注意:原來的$JAVA_HOME/jre/lib/security/cacerts文件要先刪掉,否則會報出java.io.IOException: Keystore was tampered with, or password was incorrect錯誤
4、服務端tomcat配置
打開$CATALINA_HOME/conf/server.xml,增加
<Connector protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/certificate/tomcat.keystore" keystorePass="123456" port="8443" />
port一般為8443或443,最常用的是443端口(https默認端口),
這樣https方式訪問的時候可以不加端口號(如:https://jacky.sso/cas/login);
keystoreFile為tomcat目錄下的密鑰文件;
keystorePass為私鑰密碼;truststoreFile為生成的信任文件,
5、生成客戶端密鑰庫文件
單向認證的客戶端配置只需生成客戶端信任文件caserts即可。
首先將服務端生成的證書文件(之前生成的casserver.cer文件)復制到$JAVA_HOME/jre/lib/security下,
然后打開CMD窗口切換到$JAVA_HOME/jre/lib/security下並執行命令:
keytool -import -trustcacerts -alias tomcat -storepass 123456 -file tomcat.cer -keystore cacerts
命令執行成功后JDK目錄/jre/lib/security下多出cacerts文件。
6、在hosts文件中增加下面映射
192.168.6.128 www.jacky.sso.com
7、驗證https配置
說明配置成功
8、總結
1、講解了利用jdk自帶的工具生成證書
2、講解了配置tomcat配置https的方法
歡迎關注