天天看点

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"      

部署