springboot配置https
目录
1.背景介绍
2.配置https
背景介绍
要在本地环境中验证线上https的问题,需要搭建https的环境。
配置https
1、生成SSL证书
自己通过keytool生成,这里作为演示,采用keytool生成,实际项目中大部分采用的都是购买的方式。
Keytool是java提供的证书生成工具,如果配置了java_home的,直接就可以在控制台进行生成了,这里演示使用的是window的dos窗口:
(1)打开dos窗口:在jdk的bin目录中打开dos窗口
(2)输入如下命令:
keytool -genkey -alias tomcat -dname "CN=Andy,OU=kfit,O=kfit,L=HaiDian,ST=BeiJing,C=CN" -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365
这时候在目录中会生成keystore.p12文件,请将在上一步生成的证书放到src/main/resources目录下
2、Spring Boot中启用HTTPS
默认情况下Spring Boot内嵌的Tomcat服务器会在8080端口启动HTTP服务,Spring Boot允许在application.properties中配置HTTP或HTTPS,但是不可同时配置,如果两个都启动,至少有一个要以编程的方式配置。
server: ssl: key-store: classpath:keystore.p12 key-alias: tomcat key-store-type: PKCS12 enabled: true key-store-password: test123456 port: 443
3、启动加载证书遇到的问题
DerInputStream.getLength(): lengthTag=111, too big异常
这是因为maven在打包文件的时候对证书做了处理,需要添加maven配置。
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
参考文章:https://zhuanlan.zhihu.com/p/31385073
touch fish