SpringBoot 开启https和http重定向可以在本地环境快速模拟一番。
学习目标
- 快速掌握SpringBoot开启HTTPS服务。
快速查阅
专题阅读:《SpringBoot 布道系列》
使用教程
一、生成密钥
首先在终端执行如下命令,然后在当前路径可以拿到密钥文件。
keytool -genkey -alias localhost -keyalg RSA -keypass 123456 -keystore socks.jks -storepass 123456 -dname "cn=localhost,ou=localhost,o=gz,l=gz,st=gz,c=cn"
二、配置密钥
然后将密钥文件socks.jks
复制到当前项目的resources/static
静态目录,防止打包时丢失此文件!!
在application.yml
添加如下配置:
server:
port: 8080
ssl:
key-store: classpath:static/socks.jks #路径说明:加密文件放在类路径下的静态目录可以自动编译 防止打包丢失文件
key-store-password: 123456
key-password: 123456
网上很多文章都没有重点强调关于路径的问题,所以特意加了注释。
三、添加重定向
其实有了上面的SSL配置,已经默认实现https的访问了,下面是监听额外的http端口并重定向到当前应用的https端口。
@SpringBootApplication
public class MailTempApplication {
public static void main(String[] args) {
SpringApplication.run(MailTempApplication.class);
}
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(8081);//监听HTTP端口
connector.setRedirectPort(tomcat.getPort());//转发HTTPS端口
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
}
四、测试https和http重定向
默认监听https:https://localhost:8080
额外监听http:http://localhost:8081 重定向到 https://localhost:8080 。
五、小结
1、SpringBoot开启https只需要在配置文件添加SSL证书即可。
2、SpringBoot开启http重定向需通过ServletWebServerFactory
来实现。
3、生产环境通常并不会像文章里这么做,而是通过https域名来映射到应用主机。例如通过网络管理或者Nginx等方式让 http://www.socks.com 映射到 https://www.socks.com 。
网友评论