1.背景
许多生产中服务端应用系统需要ssl认证,走https访问,以满足等保要求。
有些前后端一体的项目工程,完全可以用jdk生成证书(本章节介绍此);
若是前后端分离,使用nginx代理部署的,得配置响应的证书;
生成证书的jdk版本和运行java程序的版本最好保持一致,以免出现兼容问题程序启不来:Caused by: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48),我使用的是1.8.0_181
2.ssl证书三种
一般前2种比较好,但是也要花¥,还可能涉及到域名,所以客户或者业主不会购买,那么第三种就是多数选择,页面显示如下
3.证书生成
使用jdk自带的keytool工具完全可以生成p12证书,参考连接:https://www.cnblogs.com/yejiajian/p/14566455.html
1).JDK的bin自带的工具
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -validity 3650 -keystore tomcat.keystore
参数说明:alias 实体别名(包括证书私钥)
keyalt 采用公钥算法,默认是DSA,DSA算法对应的默认算法是sha1withDSA,不支持2048长度,故指定RSA
keysize 密钥长度
validity 有效期
keystore 指定keystore文件
可以看到已生成tomcat.keystore文件
2).查看keystore文件详情
keytool -v -list -keystore tomcat.keystore
3).证书导入密钥库
keytool -exportcert -keystore tomcat.keystore -file tomcat.cer -alias tomcat
导入密钥库命令
keytool -importcert -keystore client_trust.keystore -file tomcat.cer -alias tomcat -noprompt
4).导出p12证书
keytool -importkeystore -srckeystore tomcat.keystore -destkeystore tomcat.p12 -srcalias tomcat -destalias tomcat -srcstoretype jks -deststoretype pkcs12 -noprompt
4.应用
springboot应用,配置文件application.yml
server:
port: 8080
ssl:
key-store: D:\work\MIT\PIS安全\SSL\tomcat\tomcat.p12
key-store-password: mission
key-store-type: PKCS12
key-alias: tomcat
配置截图:
访问http://localhost:8080会出现如下提示
使用https://localhost:8080访问,完成。
5.工程代码