SpringbootSpring Boot 从入门到上瘾

SpringBoot 开启https和http重定向(基于SSL

2019-01-13  本文已影响13人  一只袜子

SpringBoot 开启https和http重定向可以在本地环境快速模拟一番。

学习目标

快速查阅

专题阅读:《SpringBoot 布道系列》

官方教程:SpringBoot Configure SSL

使用教程

一、生成密钥

首先在终端执行如下命令,然后在当前路径可以拿到密钥文件。

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

上一篇 下一篇

猜你喜欢

热点阅读