1:JDK生成自签证书SSL,首先以管理员身份运行CMD窗口,执行命令
bash
keytool -genkey -alias testhttps -keyalg RSA -keysize 2048 -validity 36500 -keystore "F:/ssl/testhttps.keystore"
bash
F:\ssl>keytool -genkey -alias testhttps -keyalg RSA -keysize 2048 -validity 36500 -keystore "F:/ssl/testhttps.keystore"
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: hdx
您的组织单位名称是什么?
[Unknown]: hdx
您的组织名称是什么?
[Unknown]: hdx
您所在的城市或区域名称是什么?
[Unknown]: gz
您所在的省/市/自治区名称是什么?
[Unknown]: gd
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=hdx, OU=hdx, O=hdx, L=gz, ST=gd, C=CN是否正确?
[否]: 是
输入 <testhttps> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次输入新口令:
F:\ssl>
2:在相应的目录生成testhttps.keystore文件
3:springboot 中项目配置证书,将 testhttps.keystore 文件放入 /resource 目录下
4:application.yml 配置文件中添加ssl 相关配置
yml
server:
port: 8989
servlet:
context-path: /test
ssl:
#类路径下的自签证书
key-store: classpath:testhttps.keystore
# 证书别名
key-alias: testhttps
#证书密码
key-store-password: 123456
# 证书类型
key-store-type: JKS
# 开启证书验证
enabled: true
5:访问路径https://localhost:8989/test
注意:jeecgboot项目的ssl证书testhttps.keystore 放在resource目录下不生效,放在resource下,启动报如下错误,特别坑,跟着源码根本找不出来,也不提示找不到testhttps.keystore文件
解决方法,将testhttps.keystore放在和执行jar报同目录,类似项目根目录下,根据具体情况定,修改yml配置如下,如果放的证书位置不对,会有提示
yml
server:
port: 8989
servlet:
context-path: /test
ssl:
#jeecgboot项目自签证书不要加classpath
key-store: testhttps.keystore
# 证书别名
key-alias: testhttps
#证书密码
key-store-password: 123456
# 证书类型
key-store-type: JKS
# 开启证书验证
enabled: true