springboot使用https

2021-10-22  本文已影响0人  SeekLife0

1、获得https的证书。

途径:
1、自己使用openssl生成自签证书。
2、到freessl网站可以免费申请90天到期证书。
https://freessl.org/#
步骤:
填入自己的域名

图片.png
选择日期
图片.png
自动生成CSR
图片.png
选择免费
图片.png
使用DNS验证
图片.png
域名没问题DNS验证会给你一个,域名以及key,key-value。

来到云服务器控制台选择域名选项,如阿里云
首先来到域名解析


图片.png

添加记录


图片.png
修改记录选CNAME
主机记录填入key
解析线路选择境外

记录值key-value


图片.png
然后点击verify domain,完成验证,因为是外网验证的时候翻一下,否则会验证失败。
图片.png
点击下载证书
图片.png
解压后得到
图片.png
3、到对应云服务中进行ssl证书申请。

2、不同服务器需要不同类型的证书文件。使用keyManager来生成

https://www.keymanager.org/
因为springboot使用嵌入式的tomcat我们需要获得tomcat对应证书文件。我们下载好keymanager。
导入获取的证书文件,全选所有进行导入。

导入文件.png 图片.png

点击导出得到jks后缀的文件,私钥加密密码随便输入一个。


图片.png

最后得到jks文件


图片.png

3、对springboot进行相关配置

把jks文件放入resource文件夹下
对application.yml进行配置

server:
  port: 9100
  ssl:
    enabled: true
    key-store: classpath:***.jks
    key-store-type: JKS
    key-store-password: ***

在springboot启动类中配置自动从http跳转https

    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的默认端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号,也就是项目配置的port
        connector.setRedirectPort(9100);
        return connector;
    }
上一篇下一篇

猜你喜欢

热点阅读