一、資源準備
- 需要的安裝包
jdk-8u171-linux-x64.tar
apache-tomcat-8.5.31.tar
apache-maven-3.5.3-bin.tar
cas-overlay-template-master.zip
- 下載地址
jdk: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
tomcat: https://tomcat.apache.org/download-80.cgi
maven: http://maven.apache.org/download.cgi
cas:https://github.com/apereo/cas-overlay-template/tree/5.3
二 、安裝環境
1、安裝jdk
2、安裝Tomcat
三、生成證書,并為系統注冊
- 生成server.keystore:
keytool -genkey -alias tomcat -keyalg RSA -keypass tomcat -storepass tomcat -keystore server.keystore -validity 3600
alias: 別名 這里起名tomcat
keyalg: 證書算法,RSA
keypass:密鑰保護密碼
storepass:存儲密碼
keystore:證書生成的目標路徑和文件名
[root@ZDK tomcat-8.5]# keytool -genkey -alias tomcat -keyalg RSA -keypass tomcat -storepass tomcat -keystore server.keystore -validity 3600
您的名字與姓氏是什么?
[Unknown]: localhost
您的組織單位名稱是什么?
[Unknown]: se^H
您的組織名稱是什么?
[Unknown]: si
您所在的城市或區域名稱是什么?
[Unknown]: si
您所在的省/市/自治區名稱是什么?
[Unknown]: si
該單位的雙字母國家/地區代碼是什么?
[Unknown]: si
CN=localhost, OU=s, O=si, L=si, ST=si, C=si是否正確?
[否]: y
- 生成證書 server.cer?:
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass tomcat
- 導入證書:
keytool -import -trustcacerts -alias tomcat -keystore "/etc/pki/java/cacerts" -file "/home/cas/tomcat-8.5/server.cer" -storepass changeit
所有者: CN=localhost, OU=s, O=si, L=si, ST=si, C=si
發布者: CN=localhost, OU=s, O=si, L=si, ST=si, C=si
序列號: f720b7a
有效期為 Fri Dec 21 15:35:41 CST 2018 至 Sun Oct 29 15:35:41 CST 2028
證書指紋:
MD5: 9E:D0:C6:39:3B:42:2C:73:D3:2A:EE:F8:4F:B4:35:14
SHA1: 86:61:18:F8:79:1F:27:5F:74:E6:2A:A3:EF:C0:87:F6:47:5B:A5:51
SHA256: 9B:75:39:8F:71:77:8E:B9:A6:09:F1:CF:62:98:57:3B:7C:C3:1D:B1:F1:60:48:7D:E5:C9:16:CD:BF:0A:E6:4C
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3
擴展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 35 39 81 E0 7F 30 91 41 AF 8C 12 A3 B0 54 72 F0 59...0.A.....Tr.
0010: 9D 14 35 31 ..51
]
]
是否信任此證書? [否]: y
證書已添加到密鑰庫中
四、tomcat配置https
- 編輯 server.xml 文件
vim /home/cas/tomcat-8.5/conf/server.xml
,添加
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/home/cas/tomcat-8.5/server.keystore" keystorePass="tomcat" />
- 重啟Tomcat,檢測是否配置https成功,訪問:https://172.10.10.232:8443/,出現Tomcat默認的歡迎界面則表示配置成功
五、編譯cas包
- 解壓cas-overlay-template-master
- 添加服務器數據庫支持,在pom文件中添加依賴:
<!--數據庫認證相關 start-->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc-drivers</artifactId>
<version>${cas.version}</version>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${cas.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--數據庫認證相關 end-->
編譯生成cas.war 包
mvn clean package
將生成在 /target/cas.war 包拷貝到 服務器webapps文件夾下
-
訪問:http://172.10.10.232:8181/cas/login 出現以下畫面
http請求頁面.png 兩點紅色警告,非安全連接和靜態密碼
-
訪問:https://172.10.10.232:8443/cas/login 出現以下畫面
https請求頁面.png 只剩下靜態密碼警告
六、動態數據庫配置
- 配置配置文件 application.properties
vim /home/cas/tomcat-8.5/webapps/cas/WEB-INF/classes/application.properties
# 注釋靜態密碼
# cas.authn.accept.users=casuser::Mellon
# 配置數據庫
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3307/sso?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=abc123456
cas.authn.jdbc.query[0].sql=select * from cas where username=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
# 添加可以使用http認證
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
select * from cas where username=?
,其中 cas 為自定義的用戶數據庫
七、修改cas可支持的service
- 支持 http 驗證,編輯
/home/cas/tomcat-8.5/webapps/cas/WEB-INF/classes/services/HTTPSandIMAPS-10000001.json
vim /home/cas/tomcat-8.5/webapps/cas/WEB-INF/classes/services/HTTPSandIMAPS-10000001.json
# 支持http
"serviceId" : "^(https|imaps)://.*", 改為 "serviceId" : "^(https|imaps|http)://.*",
八、測試登錄
- 請求:https://172.10.10.232:8443/cas/login?service=http://172.10.10.232:8082/dmp/catalogue/queryPage
重定向頁面:
登錄頁面.png - 輸入數據庫配置的賬號密碼,重定向到訪問接口,則請求成功