SpringBoot 配置 ssl 开放 443 端口

共计2487字,阅读大约9分钟。

[toc]

问题描述: 站点已开启https却报链接不安全,没错这是后端的错

解决方法:

一 :下载ssl证书

下载证书有两个选择。

一是用项目域名的证书,下载时候选java版本或JKS版本。(推荐)

二是本地申请证书

获得证书方法请自行解决,建议获取JKS后缀的

二 : 配置springboot服务

配置文件在app的yml里,既 server配置下

#添加数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xxxxx:3306/数据库?useUnicode=true&characterEncoding=utf8
    username: xxx
    password: xxx
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
#设置端口号
server:
  port: 1906
  ssl:
    key-store: classpath:admingy.jks
    enabled: true
    key-store-type: JKS
    key-store-password: 密码

图片[1] | Web Stack | SpringBoot 配置 ssl 开放 443 端口 | 一个栈




上面是配置代码,key-store是JKS的地址,建议和我一样放在yml配置的统计目录下面

文件名前加 classpath: 表示在当前文件同级目录内

极度不建议写决定路径,因为打包在服务器部署后会报地址错误

三 : 配置Tomcat的config,保证https开启及http的强制跳转

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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;

public class TomcatConfig {
    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(connector);
        return tomcat;
    }

    @Bean
    public Connector connector(){
        Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //http端口
        connector.setPort(1906);
        connector.setSecure(false);
        // https端口,即server.port
        connector.setRedirectPort(1906);
        return connector;
    }
}

图片[2] | Web Stack | SpringBoot 配置 ssl 开放 443 端口 | 一个栈

这里的第一个1906是http的端口,第二个是https的端口

您要是想问1906是什么东西欢迎下方评论区讨论

至此ssl的配置已结束,您网站的项目也不会再报站点不安全的错误

温馨提示:本文最后更新于2022-06-12 12:24:21,某些文章具有时效性,若有错误或已失效,请在下方留言或联系雅舍站长
© 版权声明
THE END
有所帮助就支持一下吧
点赞0当赏 分享
箴言区 抢沙发
头像
达瓦里希请发言...
提交
头像

昵称

取消
昵称表情代码图片