JDK中keytool是一个证书管理工具,可以生成自签名证书。 就是自己生成的证书,并不是官方生成的证书。除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书需要花钱。
-
生成证书
win+r进入"运行界面",输入cmd进入命令行界面
需要先配置好jdk环境变量才能使用
输入:keytool -genkey -alias tomcat -keyalg RSA -keystore 目录/tomcat.keystore
其中-genkey 指生成keystore ,-alias 指别名,-keyalg 指使用的加密算法,-keystore 后面跟上生成的keystore目录
回车后会出现以下提示:
输入密钥库口令:tomcat 再次输入新口令:tomcat 您的名字与姓氏是什么? [Unknown]:
xxx.xxx.xxx.xxx 您的组织单位名称是什么? [Unknown]: cx 您的组织名称是什么? [Unknown]:
cx 您所在的城市或区域名称是什么? [Unknown]: hb 您所在的省/市/自治区名称是什么? [Unknown]: hb
该单位的双字母国家/地区代码是什么? [Unknown]: cn CN=tuhao, OU=tuhaojia, O=fnic,
L=didu, ST=didu, C=cn是否正确? [否]: y输入 tomcat 的密钥口令
(如果和密钥库口令相同, 按回车):这里大部分可以随意填写,但需要注意:
一点是密钥口令要记住,后面配置服务器的时候要用上。
展示如下
然后在对应的文件夹生成tomcat.keystore文件
生成 .keystore后可以用keytool -export -alias tomcat -keystore 目录/tomcat.keystore -storepass tomcat -rfc -file 目录/tomcat.cer
生成一个cer证书,可以发送给客户端安装,安装在信任的证书中后再访问就不会出现“此网站的安全证书存在问题”的提示。
然后在对应的文件夹生成tomcat.cer文件 -
在Springboot中配置证书
将tomcat.keystore拷贝到项目resources目录下
配置application.yml
server:
# 服务器的HTTP端口,默认为8080
port: 8080
ssl:
#文件所在位置
key-store: classpath:tomcat.keystore
#keystore的密码
key-store-password: tomcat
key-store-type: JKS
key-alias: tomcat
- 服务启动报错can not load的异常
问题分析
到编译生成的target\class去找这个文件,发现确实没有这个文件,那么就是在编译的时候将这个文件排除了。
解决方案
maven-resources-plugin插件的时候:开了过滤器,在pom中添加配置:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>*.keystore</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>*.keystore</include>
</includes>
</resource>
</resources>
</build>