SpringBoot2.x 配置SSL证书,实现Https

avatar 2020年07月23日10:55:43 0 2057 views

本文介绍给 SpringBoot 项目配置 SSL 证书。

HTTPS 实际上就是 HTTP + SSL,使我们的网站更加安全,地址栏上会有一把小锁。

点击小锁,看详情

这种证书是免费的,有效期为1年,过期后需要重新申请。

 

一、SSL申请方式

可以通过阿里云或者腾讯云申请免费版DVSSL证书 。

这里以腾讯云为例,访问 https://console.cloud.tencent.com/ssl

 

点击 申请免费证书

输入域名和邮箱即可,下一步

然后进行DNS验证即可

然后等待审核,平时比较快的时候十几分钟就能审核完成。

 

然后在刚才那个页面下载证书

下载完成后,解压,可以看到不同Web服务器版本的证书和私钥

 

二、SpringBoot 项目配置证书

我们需要一个正常的 SpringBoot 项目,这里以本站为例。

1、拷贝 Tomcat 里  liuyanzhao.com.jks 文件到 resourses 下面

 

2、在 application.yml 里添加配置

server:
  port: 443
  ssl:
    key-store: classpath:liuyanzhao.com.jks
    key-store-password: 088XXXXXXX
    key-store-type: JKS

key-store 的值是上面那个 jks 文件的路径

key-store-password 的值是 keystorePass.txt 里的内容

 

3、启动类添加两段代码,用来设置内置 tomcat 的端口号和 https 配置

完整代码如下

package com.liuyanzhao.sens;

import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;

/**
 * @author 言曌
 */
@SpringBootApplication
public class SensApplication {


    public static void main(String[] args) {
        SpringApplication.run(SensApplication.class, args);
    }

    /**
     * http重定向到https
     *
     * @return
     */
    @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(80);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(443);
        return connector;
    }
}

 

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0