天天看點

Apereo CAS 5.0.3.1安裝配置

Apereo CAS 5.0開始使用spring boot的進行了全面的重構了,充分使用spring cloud的各個元件。如果是正在學習spring boot和spring cloud的話,這個項目本身就是一個非常好的例子。

要學習Apereo CAS的話,作業系統最好是linux,對于初學者可以節省很多時間。

環境:

CentOS7.3

Oracle JDK8

maven3.3.9

tomcat8.0.X(8.5.X相關配置變化較大,熟悉的也可以使用,Apereo CAS 5.x内置的tomcat版本也是8.5.X)

eclipse+gradle

編譯安裝

官方的編譯安裝文檔如下

​​​ https://apereo.github.io/cas/5.0.x/installation/Maven-Overlay-Installation.html​​ 上邊的文檔提供了gradle和maven兩種方式的模闆,按照文檔中的步驟執行即可。

順便提一下,overlay是maven-war-plugin的提供的一種機制,可以将兩個Web應用的資源進行合并,相關的class都會被複制到WEB-INF/classes下面,相關的JSP等資源也合并到一起。

部署

CAS的部署需要很多資訊安全方面的知識,證書、電子簽名、對稱非對稱加解密等,當然啦,還有HTTPS相關的内容。

推薦下面三個連結的内容:

​​​ http://www.codeceo.com/article/https-worker.html​​​ http://www.codeceo.com/article/https-certificate-generation.html

從頭到尾多看幾遍基本上都清楚了。

準備一個域名

當然啦,不是真的準備一個域名,隻是自己随便起一個名字,然後添加到各個需要通路CAS Server的作業系統的hosts檔案就行了。本域名用于下面生成證書時,作為證書所有者姓名資訊輸入。同時在部署CAS時,還需要配置到CAS的配置檔案中。

證書

頒發證書(生成證書)

頒發證書分兩步,第一步要建立一條證書記錄,使用JDK建立一個證書記錄的指令如下

keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -keystore server.keystore      

上邊的指令,會建立一條證書記錄,同時建立一個server.keystore的密鑰庫,同時将生成的證書記錄寫入server.keystore。keystore中的一條證書記錄資訊包含該條證書的私鑰,公鑰和對應的數字證書的資訊。

第二步,導出數字證書

keytool -export -alias duke -keystore keystore -rfc -file testkey      

數字證書包含三部分資訊:證書中繼資料資訊,序列号,過期時間等、所有者資訊,姓名、地區等、所有者公鑰;相比于在keystore中的資訊,沒有所有者的密鑰,所有者的密鑰隻有所有者自己知道,而此處的數字證書是要分發到公網上的。

在tomcat所在的機器,将證書導入到cacerts

登入Tomcat所在的機器,切換到目錄 ${JAVA_HOME}/jre/lib/security, 執行如下指令:

keytool -import -alias vbooking -keystore cacerts -file ${JAVA_HOME}/jre/lib/security/vbooking.cer      

可使用如下指令檢視證書資訊:

keytool -list -keystore cacerts -alias vbooking      

如果要更新證書,可以先删除原證書,再導入新證書:

cd ${JAVA_HOME}/jre/lib/security
keytool -delete -alias vbooking -keystore cacerts
keytool -import -alias vbooking -keystore cacerts -file ${JAVA_HOME}/jre/lib/security/vbooking.cer
keytool -list -keystore cacerts -alias vbooking      

重新開機tomcat即可生效。

用戶端浏覽器需要導入證書到受信任的根目錄證書

用浏覽器通路網站,根據提示将導入證書到受信任的根目錄證書。

數字證書的生成,分發,使用,可以放到三台機器上,A機器用于生成證書,作為CA,将A生成的數字證書導入B機器上的JRE,在B機器上的tomcat中配置(下面提到tomcat的HTTPS配置),在C機器上的浏覽器通路B機器的tomcat,下載下傳證書,将數字證書導入到本機的受信任的根目錄證書。

Tomcat SSL

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true" maxHttpHeaderSize="8192"
               clientAuth="false" sslProtocol="TLS" 
      keystoreFile="/etc/cas/server.keystore" 
      truststoreFile="/opt/jdk1.8.0_121/jre/security/cacerts"
      keystorePass="changeit"/>      

将tomcat的https配置的注釋放開,然後加上下面三個屬性配置:

keystoreFile="/etc/cas/server.keystore" 
truststoreFile="/opt/jdk1.8.0_121/jre/security/cacerts"
keystorePass="changeit"      

部署