CAS overlay默认只能支持https
虽然可以使用自签名证书,但是如果使用浏览器访问,浏览器会提示网址不安全,为了消除不安全提示,则需要使用可信SSL证书,免费的例如letsencrypt申请的。
需要处理的是,将申请的免费证书转换成CAS服务器认可的证书。
主要步骤是(以letsencrypt申请的证书为例)
1、转换letsencrypt证书格式,要点是要使用公私钥和CA文件,找到这个要点花了我好几天😅
openssl pkcs12 -export \
-in /etc/letsencrypt/live/website.com/cert.pem \
-inkey /etc/letsencrypt/live/website.com/privkey.pem \
-out /tmp/website.com.p12 \
-name cas.cert \
-CAfile /etc/letsencrypt/live/website.com/fullchain.pem \
-password pass:changeittonew
注意 website 替换成自己所申请的域名的路径,同理其他部分自行修改设定
执行完毕后,会生成/tmp/website.com.p12文件
插一句,免费动态域名也可以申请可信证书。
2、导入cas运行环境中
现将上文生成的p12文件,放到cas运行环境中。
在执行java -jar之前,无论是容器环境还是tomcat、springboot等环境,执行如下语句
keytool -importkeystore \
-deststorepass changeittonew \
-destkeypass changeittonew \
-deststoretype pkcs12 \
-srckeystore website.com.p12 \
-srcstoretype PKCS12 \
-srcstorepass changeittonew \
-destkeystore cas.jks \
-alias cas.cert
这个的意思是将p12格式的证书文件导入到java keystore中去,并设定jks文件为 cas.jks
同时,需要配置cas的配置文件
server.ssl.enabled=true
server.ssl.key-store=file:/etc/cas/cas.jks
server.ssl.key-store-password=changeittonew
server.ssl.key-password= changeittonew
server.ssl.key-alias=cas.cert
最后,由于免费证书一般只有3个月有效期,有效期过了以后,浏览器仍然会有安全风险提示,为了避免该情况,需要将以上步骤做成计划任务自动执行。