解决上图所提示的问题(在本地),需要配置https请求。
首先给这个服务起个域名:shiro.sso.com
配置到本地的host文件,这里我通过工具SwitchHosts来设置。
查询别名是shiro.sso.com的证书
keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" | findstr/i shiro.sso.com
如果之前有相同别名的证书删除
keytool -delete -alias shiro.sso.com -keystore %JAVA_HOME%\jre\lib\security\cacerts
生成密钥
参数说明
- genkey 生成密钥
- keyalg 指定密钥算法,这时指定RSA,
- keysize 指定密钥长度,默认是1024位,这里指定2048,长一点,比较难破解
- siglag 指定数字签名算法,这里指定为SHA1withRSA算法
- validity 指定证书有效期,这里指定36500天,也就是100年
- alias 指定别名,这里是shiro.sso.com
- keystore 指定密钥库存储位置,这里存在D:\shiro-cas-ssl
- dname 指定用户信息
keytool -genkey -alias shiro.sso.com -keyalg RSA -keystore casServer.keystore
便于记忆这里密码设置为123456
生成证书
参数说明
- -alias指定别名为shiro.sso.com;
- -storepass指定私钥为123456;
- -file指定导出证书的文件名为casServer.crt;
- -keystore指定之前生成的密钥文件的文件名。
注意:-alias和-storepass必须为生成tomcatekeystore密钥文件时所指定的别名和密码,否则证书导出失败
keytool -export -alias shiro.sso.com -keystore casServer.keystore -file casServer.crt -storepass 123456
查看证书文件
keytool -printcert -file casServer.crt
导入cacerts证书库
需要输入保护密码,默认的是changeit
,输入即可,而不是生成证书时自己设置的
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file D:\shiro-cas-ssl\casServer.crt -alias shiro.sso.com
检查是否导入成功,有如下图输出代表成功
keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" | findstr/i shiro.sso.com
配置项目
把tomcat.keystore拷贝到项目的etc/cas下
什么是 WAR Overlay?
Overlay 技术可以把多个项目 war 合并成为一个项目,如果项目存在同名文件,那么主项目中的文件将覆盖掉其他项目的同名文件。
复制原有的application.properties到新创建的application.properties,修改如下:
##SSL配置
server.ssl.enabled=true
server.ssl.key-store=file:/etc/cas/casServer.keystore
server.ssl.key-store-password=123456
server.ssl.key-password=changeit
server.ssl.keyAlias=shiro.sso.com
配置toncat9开启https协议(其余参数代码中设置)
<Connector port="8443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="D:\shiro-cas-ssl\casServer.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" />
启动项目,发现我们的更改已经编译
浏览器访问:https://shiro.sso.com:8443/login