环境
- cas5.x
- tomcat8.x
- jdk8
- window
步骤
1、生成服务器的密匙文件caskey.keystore
keytool -genkey -alias caskey -keyalg RSA -keysize 2048 -validity 36500 -keystore D:\keys\caskey.keystore
注意:您的名字与姓氏cas.app.com是CAS服务器使用的域名,不是随便乱定的
参数说明
- genkey 生成密钥
- keyalg 指定密钥算法,这时指定RSA,
- keysize 指定密钥长度,默认是1024位,这里指定2048,长一点,比较难破解,
- validity 指定证书有效期,这里指定36500天
- alias 指定别名,这里是caskey
- keystore 指定密钥库存储位置,这里存在D:\keys\目录下
2、导出证书
进入到D:\keys目录下
keytool -export -alias caskey -storepass 123456 -file caskey.cer -keystore caskey.keystore
然后发现keys目录下多了一个caskey.cer的文件,表示导出证书成功
参数说明
- -alias指定别名为caskey
- -storepass指定私钥为123456
- -file指定导出证书的文件名为caskey.cer
- -keystore指定之前生成的密钥文件的文件名
注意:-alias和-storepass必须为生成tomcatekeystore密钥文件时所指定的别名和密码,否则证书导出失败
3、导入证书导入到jdk信任库
keytool -import -alias caskey -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file D:\keys\caskey.cer -trustcacerts
注意:
- 原来的%JAVA_HOME%/jre/lib/security/cacerts文件要先删掉,否则会报出java.io.IOException: Keystore was tampered with, or password was incorrect错误。
- 如linux系统-keystore后的路径不需要加双引号
4、服务端tomcat配置
打开%TOMCAT_HOME%/conf/server.xml,增加
<Connector protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="D:\keys\caskey.keystore"
keystorePass="123456" port="8443" />
port一般为8443或443,最常用的是443端口(https默认端口),这样https方式访问的时候可以不加端口号,keystoreFile为tomcat目录下的密钥文件,keystorePass为私钥密码
5、在C:\Windows\System32\drivers\etc\hosts文件中增加下面映射
127.0.0.1 cas.app.com
6、在你项目的application.properties中添加/修改设置
server.name=https://cas.app.com:8443
server.ssl.key-store=file:D:/keys/caskey.keystore
server.ssl.key-store-password=123456
server.ssl.key-password=123456
CAS服务器的搭建可参考 CAS5.x服务器定制化(Gradle-overlay方式)
7. 启动服务器