在Spring Boot项目中使用https(jks)
SpringBoot配置HTTPS在工作中时长会遇到配置https,SpringBoot自带的是tomcat服务器一般使用的.jks文件配置SSL加密。过程中会用到两个工具:OpenSSL,Keytool工具。OpenSSL:下载地址:http://slproweb.com/products/Win32OpenSSL.htmlkeytool工具,这是jdk自带的工具,在jdk的/bin目录下可以找
目录
1 解压已下载的证书压缩包,获得“xxx.pem”文件和xxx.key文件
2 使用OpenSSL工具,将pem格式证书转换为PFX格式证书,得到“server.pfx”文件
3 使用Keytool工具,将PFX格式证书文件转换成JKS格式,得到“xxx.jks”文件
一 SpringBoot配置HTTPS
在工作中时长会遇到配置https,SpringBoot自带的是tomcat服务器一般使用的.jks文件配置SSL加密。
过程中会用到两个工具:OpenSSL,Keytool工具。
OpenSSL:下载地址:http://slproweb.com/products/Win32OpenSSL.html
keytool工具,这是jdk自带的工具,在jdk的/bin目录下可以找到。
二 自己生成CSR
https供应商不会直接提供.jks文件。所以,我们就需要将加密文件转换成所需要的jks文件。
1 解压已下载的证书压缩包,获得“xxx.pem”文件和xxx.key文件
“server.pem”文件包括两段证书代码“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”,分别为服务器证书和中级CA证书。
2 使用OpenSSL工具,将pem格式证书转换为PFX格式证书,得到“server.pfx”文件
找到openssl的bin目录,找到openssl.exe文件,单击右键以管理员身份运行,打开命令行,输入命令:
pkcs12 -export -out D:\xxx.pfx -in D:\xxx.pem -inkey D:\xxx.key
按照要求输入两次密码,这时在d盘生成了xxx.pfx文件 请牢记此处输入的PFX证书密码。后续设置JKS密码需要与此处设置的PFX密码保持一致,否则可能会导致Tomcat启动失败。
3 使用Keytool工具,将PFX格式证书文件转换成JKS格式,得到“xxx.jks”文件
keytool -importkeystore -srckeystore D:\xxx.pfx -destkeystore D:\xxx.jks -srcstoretype PKCS12 -deststoretype JKS
按照提示输入2次JKS证书密码
第三次提示输入源密钥库口令: 输入生成xxx.pfx中设置PFX证书密码
查看D盘下是否生成 xxx.jks
生成完成后,新建一个“keystorePass.txt”文件,将JKS的密码保存在该文件中。
三 在SpringBoot中配置
1 将xxx.jks放入resources文件夹下
#配置jks存放位置
server.ssl.key-store=classpath:xxx.jks
#https端口号
server.port=8090
#是否启用SSL证书
server.ssl.enabled=true
#密钥库密码
server.ssl.key-store-password=jks密码
#密钥库类型(JKS类型)
server.ssl.key-store-type=JKS
2 启动测试
四 同时配置http和https都能访问
1 新加配置
#http端口号
http.port=18092
2 在SpringBoot启动类中添加
// 获取配置端口
@Value("${http.port}")
private Integer httpPort;
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
// 添加http
tomcat.addAdditionalTomcatConnectors(createStandardConnector());
return tomcat;
}
/**
* 配置http
*
* @return connector
*/
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(httpPort);
return connector;
}
五 参考资料
https://www.caojingbin.com/post/40
https://www.cnblogs.com/yangchongxing/p/13834467.html
更多推荐
所有评论(0)