SpringBoot 网站升级为 HTTPS

下面就从 HTTPS 证书申请、网站 HTTPS 的配置、HTTP 重定向到 HTTPS 三个方面教你将一个 SpringBoot 网站升级为安全的 HTTPS。

证书申请

目前国内提供免费 HTTPS 证书的云服务商并不多,一向不大方的腾讯这次倒是很大方,腾讯云提供了免费的亚洲诚信品牌免费型 DV 版 SSL 证书,注册认证过的用户即可免费申请 20 个免费证书。

创建证书

选择证书

首先你需要注册认证腾讯云,然后进入到 SSL证书 管理菜单,点击申请证书按钮,然后在弹框中选择免费版DVSSL证书,点击确定按钮。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
选择证书
完善域名信息

然后填写你的域名信息,通用名称即为你要申请证书的域名,申请邮箱填写个人常用邮箱即可,如下图所示:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
填写域名信息
完成域名验证

选择DNS验证后,会看到以下信息:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
DNS验证

此时进入到域名提供商的后台,添加一条解析即可:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
添加TXT解析

最后回到证书验证界面,点击验证即可认证成功,认证成功后坐等审核通过即可,一般审核时间为几分钟到几小时不等。

审核完成后,就可以在证书列表界面下载证书了,下载的到的文件是一个 ZIP 压缩包,压缩包里面包含了各种常用的网站托管软件所需的证书格式:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
证书压缩包内容

网站配置

拷贝密钥

SpringBoot 默认使用 Tomcat 进行网站托管,因此从压缩包中的 Tomcat 目录将证书(文件后缀为jks)拷贝到 SpringBoot 工程的 resources 目录下即可:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
拷贝证书到 resources 目录
更新配置

证书拷贝完整后,打开配置文件 application.yml,然后修改网站的端口为 443key-store-password 可以在证书压缩包的 Tomcat 文件夹下的文本文件中找到,此外配置一下 SSL 证书的类型以及路径等信息即可:

server:
  address: 0.0.0.0
  port: 443
  ssl:
    enabledtrue
    key-storeclasspath:luooqi.com.jks
    key-store-passwordxxxxxxxxxxxx
    key-store-typeJKS

至此便可以启动运行项目,可以在地址栏输入 https://yourdomain 即可访问,在服务器上发布后可以看到如下效果:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
认证发布成功

将 HTTP 请求重定向到HTTPS

网站虽然升级到了 HTTPS,但是很多老用户并不知情,当他们访问旧版的 HTTP 地址时会发现网站已经无法访问:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
旧版 HTTP 网址无法正常访问

因此最佳的做法是将 HTTP 重定向到 HTTPS,下面就教你如何通过代码实现。

添加 HTTP 端口配置

首先在配置文件中添加自定义的 HTTP 端口配置:

http-port: 80
建立重定向关系

新建一个配置类 HttpsConfiguration,在类中将配置文件中自定义的 HTTP 端口和 HTTPS 的端口都注入进来,然后创建一个新的 Connector 来处理 HTTP 请求,同时设置 Connector 的端口为注入的 HTTP 端口,重定向端口(setRedirectPort)为新的 HTTPS 端口。

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.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HttpsConfiguration {
    @Value("${http-port}")
    private int port;

    @Value("${server.port}")
    private int sslPort;

    @Bean
    public ServletWebServerFactory servletContainer() {
        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(redirectConnector());
        return tomcat;
    }

    private Connector redirectConnector() {
        Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
        connector.setScheme("http");
        connector.setPort(port);
        connector.setSecure(false);
        connector.setRedirectPort(sslPort);
        return connector;
    }
}
特别注意

上面代码中需要特别注意的是,TomcatServletWebServerFactory 必须要在其 postProcessContext 方法中添加 HTTP 的匹配范围 addPattern("/*"),否则重定向无效。



转载于:https://www.cnblogs.com/Zhongzz/p/10831620.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,以下是升级Spring Boot 2.x.x至Spring Boot 3.x.x的一些步骤和注意事项: 1. 首先,确保你的项目已经使用了Spring Boot 2.x.x版本,并且项目能够正常运行。 2. 在升级之前,建议先备份你的项目代码和配置文件,以防止意外情况发生。 3. 更新Spring Boot版本。在你的项目的pom.xml文件中,将Spring Boot的版本号修改为3.x.x。你可以通过访问Spring官方网站或者Maven仓库来获取最新的版本号。 4. 检查和更新依赖项。由于Spring Boot 3.x.x版本可能会引入一些新的依赖项或者更新现有的依赖项,你需要检查并更新你的项目的依赖项。可以使用Maven或者Gradle等构建工具来管理依赖项。 5. 解决不兼容的变更。在Spring Boot 3.x.x版本中,可能会有一些不兼容的变更。你需要仔细阅读Spring Boot的官方文档或者升级指南,了解这些变更并相应地修改你的代码和配置文件。 6. 运行项目并进行测试。在完成上述步骤后,你可以尝试运行你的项目,并进行一些基本的功能测试,以确保项目能够正常运行。 7. 处理可能出现的问题。在升级过程中,可能会遇到一些问题,例如依赖项冲突、配置文件不兼容等。你需要仔细检查日志和错误信息,并根据具体情况解决这些问题。 8. 更新和优化你的代码。在升级完成后,你可以根据Spring Boot 3.x.x版本的新特性和最佳实践,对你的代码进行更新和优化,以提高项目的性能和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值