首先我们访问未拥有证书的证书都是通过HTTP,如果需要变为安全访问HTTPS需要部署证书,HTTPS:SSL+HTTP

首先我们可以访问阿里云或者腾讯云申请免费的证书,这里使用阿里云来演示

申请阿里云免费SSL证书

访问阿里云,搜索SSL证书

部署springboot配置域名 springboot配置域名和证书_端口号

进入SSL证书控制台,创建一个免费的证书

部署springboot配置域名 springboot配置域名和证书_端口号_02

然后点击证书申请

部署springboot配置域名 springboot配置域名和证书_spring_03

按照要求填写申请,推荐CSR生成方式为系统生成,现在的阿里云填写申请后,会自动将DNS解析记录添加到对应网站的解析设置内,为了防止没有自动赋值,可以自己看看有没有验证成功,未验证成功就手动添加记录

部署springboot配置域名 springboot配置域名和证书_端口号_04

打开我们的域名解析控制台,我使用的阿里云DNS,进入DNS管理控制台

部署springboot配置域名 springboot配置域名和证书_tomcat_05

部署springboot配置域名 springboot配置域名和证书_tomcat_06

添加你的域名,并且解析DNS到这个域名,这边已经解析了,就不演示了,解析后打开解析设置,将证书申请记录的DNS解析记录赋值到网站解析设置内

部署springboot配置域名 springboot配置域名和证书_部署springboot配置域名_07

部署springboot配置域名 springboot配置域名和证书_部署springboot配置域名_08

验证成功提交审核就好了

下载证书

因为我们使用的是SpringBoot,环境为tomcat所以可以直接下载JKS证书,下载好后,我们会得到2个文件,一个是证书,另外一个是密钥

部署springboot配置域名 springboot配置域名和证书_tomcat_09

部署springboot配置域名 springboot配置域名和证书_部署springboot配置域名_10

我们将证书文件丢到resources资源文件夹同级目录下

部署springboot配置域名 springboot配置域名和证书_端口号_11

打开application.yml在里面进行配置

部署springboot配置域名 springboot配置域名和证书_端口号_12

server:
  port: 443      # 代表443为https
  ssl:
    key-store: classpath:heidaotu.cn.jks    # 验证文件地址,这边是在resources资源文件夹,所以使用classpath:  如果在其他文件夹使用file:
    key-store-password: 34af27bo9y5         # 密钥
    key-store-type: JKS                     # 证书类型
    enabled: true                           # 启动证书,这个是默认启动,可以不需要填写

到这里运行spring boot项目试试吧,在控制台会显示http为80端口,https为443端口,我们访问默认为80端口,如果想要访问自动为443端口可以创建一个配置文件,用来自动跳转到443端口

部署springboot配置域名 springboot配置域名和证书_端口号_13

http自动跳转到https

这是配置文件,我们只需要复制粘贴直接使用即可,如果你的端口有自定义的话,就只需要更改监听的端口号和跳转端口号即可

package com.example.studentspringbootmybatisplus.config;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HttpToHttpsConfig {
    public static void main(String[] args) {
        SpringApplication.run(HttpToHttpsConfig.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;
    }
}

这时我们访问网站就自动跳转到https了

部署springboot配置域名 springboot配置域名和证书_spring_14

如果无法跳转,可以查看你的服务器防火墙端口是否开放443,我曾经碰到个BUG,开放了443端口和80端口还是无法访问,重启也没用,最后重置服务器,部署过然后才能访问,果然重装可以解决99%的BUG