基础环境
CAS-5.3.9
Tomcat 9.0.37
jdk8
本地配置
配置hosts文件
hms.iems.cloud 是我们测试的域名
测试时需要把本地机的ip映射为hms.iems.cloud设到系统hosts文件
在目录C:\Windows\System32\drivers\etc
下找到并修改hosts文件
修改该文件需要管理员权限
生成密钥
生成步骤,各参数含义:
-genkeypair 生成密钥
-keyalg 指定密钥算法,这时指定RSA,
-keysize 指定密钥长度,默认是1024位,这里指定2048,长一点,我让你破解不了(哈哈…),
-siglag 指定数字签名算法,这里指定为SHA1withRSA算法
-validity 指定证书有效期,这里指定36500天,也就是100年,我想我的应用用不到那么长时间
-alias 指定别名,这里是cas.server.com
-keystore 指定密钥库存储位置,这里存在d盘
-dname 指定用户信息,不用一个一个回答它的问题了;
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36500 -alias hms.iems.cloud -keystore D:/ssl/tomcat.keystore -dname "CN=hms.iems.cloud,OU=ggny,O=ggny,L=QingDao,ST=QingDao,C=CN"
**注意:CN=域名,我们采用hms.iems.cloud **
输入上述命令,密钥库口令输入123456,然后回车,就在x盘生成了tomcat.keystore文件;
秘钥的密码就是:123456
生成证书
keytool -exportcert -alias hms.iems.cloud -keystore D:/ssl/tomcat.keystore -file D:/ssl/tomcat.cer -rfc
然后发现ssl目录下多了一个tomcat.cer的文件,表示导出证书成功
参数说明
- -alias指定别名为tomcat;
- -storepass指定私钥为123456;
- -file指定导出证书的文件名为tomcat.cer;
- -keystore指定之前生成的密钥文件的文件名。
注意:-alias和-storepass必须为生成tomcatekeystore密钥文件时所指定的别名和密码,否则证书导出失败
导入证书导入到jdk信任库
cd C:\Program Files\Java\jdk-11.0.2\lib\security
keytool -import -alias hms.iems.cloud -keystore cacerts -file D:/ssl/tomcat.cer -trustcacerts
输入密码为 changeit并同意导入
检查是否导入成功,有东西输出代表成功
keytool -list -keystore "cacerts" | findstr/i server
项目设置
有了证书后,让项目能够识别证书,并且把ssl开关打开
- 把tomcat.keystore拷贝到sso-server\src\main\resources下
- 配置文件
##SSL配置
server.ssl.enabled=true
server.ssl.key-store=classpath:tomcat.keystore
server.ssl.key-store-password=123456
server.ssl.keyAlias=hms.iems.cloud
将证书导入到浏览器中
不同的浏览器会有略有差别。对于chrome浏览器来说,在地址栏输入chrome://settings/进入设置界面,再点击最下面的“显示高级设置”然后往下找到
点击“管理证书”,切换到如下图红框所示“受信任的根证书颁发机构” tab页
测试
tomcat启动项目
访问 https://hms.iems.cloud:8443/cas/login 如下图所示
服务端tomcat配置
除了在我们的项目中配置文件配置相关ssl配置,也可以直接在tomcat中进行配置
打开$CATALINA_HOME/conf/server.xml,增加
<Connector port="8443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="D:\ssl\tomcat.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" />
阿里云服务端tomcat9配置
首先去阿里云申请一个pfx证书,可以免费获得。
其次,在tomcat的server.xml增加如下connector
<Connector port="8443" protocol="HTTP/1.1"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="ssl/4166471_hms.iems.cloud.pfx" keystorePass="123456"
clientAuth="false" sslProtocol="TLS" />
下边这种从网上看到的,不知道好不好用
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/your.pfx" certificateKeystoreType="PKCS12" certificateKeystorePassword="password"
/>
</SSLHostConfig>
</Connector>
ssl配置
server.ssl.ciphers
是否支持SSL ciphers.
server.ssl.client-auth
设定client authentication是wanted 还是 needed.
server.ssl.enabled
是否开启ssl,默认: true
server.ssl.key-alias
设定key store中key的别名.
server.ssl.key-password
访问key store中key的密码.
server.ssl.key-store
设定持有SSL certificate的key store的路径,通常是一个.jks文件.
server.ssl.key-store-password
设定访问key store的密码.
server.ssl.key-store-provider
设定key store的提供者.
server.ssl.key-store-type
设定key store的类型.
server.ssl.protocol
使用的SSL协议,默认: TLS
server.ssl.trust-store
持有SSL certificates的Trust store.
server.ssl.trust-store-password
访问trust store的密码.
server.ssl.trust-store-provider
设定trust store的提供者.
server.ssl.trust-store-type
指定trust store的类型.