SpringBoot 使用 SSL 证书并开启 HTTPS 访问

Springboot配置腾讯云HTTPS证书 Springboot配置腾讯云HTTPS证书一丶在腾讯云申请SSL证书二丶Springboot项目配置1.把jks文件复制到resource目录下2.修改application.yml文件3.修改启动类文件三丶启动 一丶在腾讯云申请SSL证书 首先登录腾讯云找到SSL证书申请 填好名称和邮箱 私钥密码是不能找回的需要记住。如记不住可以不填 如果不填在Tomcat目录下将会有keystorePass.txt这个文件 填了私钥密码不会有这个文件 等待验证后就可以下载文件了这里我是Springboot项目所 阅读详情

1. 导入证书

腾讯云证书

腾讯云下载的证书,解压后的文件结构为:

SpringBoot 只需要 tomcat 下的文件即可

tomcat下的文件:

keystorePass.txt :保存证书密码

www...jks:JKS 证书

注意:

    这里的 JKS 证书下载下来时的名称为:域名.jks。要在 SpringBoot 中使用的话,必须将文件名修改为不含 "." 的名称,否则将证书文件放入 resources 文件夹下后,因为证书名称含有多个 "." ,SpringBoot 将无法找到证书文件

 

将 JKS 证书拷贝至 SpringBoot 项目的 resources 文件夹下,与 application.properties 同级

 

2. 修改配置文件

配置文件加上以下配置项:

注意:如果原来有启动端口的设置,可以先改为 443

# ssl配置
# https加密端口号 443
# 服务器运行端口
server.port=443
# SSL证书路径 一定要加上classpath,证书名只能有一个后缀,否则找不到不到文件,如:name.cn.jks 则找不到
server.ssl.key-store=classpath:证书名.jks
# SSL证书密码
server.ssl.key-store-password=证书密码
# 证书类型
server.ssl.key-store-type=JKS
# 证书别名,建议设置为证书域名,否则可能报错(Invalid keystore format),如:www.baidu.cn
server.ssl.key-alias=证书别名

 

3. 修改 Maven 打包配置

jks 文件在 resources 中存放时,Maven 打包过程中可能通过编译、压缩等破坏该文件,所以添加以下配置,打包时不处理 jks 文件

<build>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
            <nonFilteredFileExtensions>
                <!-- 避免 https 证书文件被修改 -->
                <nonFilteredFileExtension>jks</nonFilteredFileExtension>
            </nonFilteredFileExtensions>
        </configuration>
    </plugin>
</build>

 

启动测试

通过上面的配置服务器已经可以启动了,运行 SpringBoot 应用即可启动。

启动后访问浏览器 127.0.0.1:8080 会提示 Bad Request,为什么呢?

    ----问:为什么要访问 8080 端口,不是配置端口为 443 了吗?

    ----答:使用 SSL 证书后,配置的端口已经是 HTTPS 的访问端口了。

                这里没有加协议头,默认使用 HTTP 访问。

                再想想,当我们的项目不配置运行端口时,默认的是不是 8080 呢?

                所以这里也一样,默认的 HTTP 端口就是 8080。

因为默认浏览器使用 http 协议发起请求,但是服务器配置 SSL 证书后就只接受 HTTPS 的请求了。

再次测试,浏览器访问:https://127.0.0.1 ,访问成功,HTTPS 默认使用 443 端口,所以不用加端口号。

这就有问题了,我们输域名地址时,谁会故意加上 HTTPS?

所以就有了第三步,重定向

 

3.将 HTTP 请求重定向到 HTTPS 请求

重写启动类

@SpringBootApplication
public class HelpStudyApplication {

    // http 请求端口,线上配置为 80
    @Value("${server.port.http}")
    private int serverPortHttp;

    // 服务器运行端口,等同于 HTTPS 请求端口,线上 443
    @Value("${server.port}")
    private int serverPortHttps;

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

    /**
     * http重定向到https
     */
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat;
        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(Http11NioProtocol.class.getName());
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(serverPortHttp);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(serverPortHttps);
        return connector;
    }
}

重要变量都加了注释,使用上面的启动类还要在配置文件中添加以下配置项:

# 配置服务器运行端口
server.port=443

# http 监听端口,用于重定向到 https 端口
server.port.http=80

经过上面的配置后,就可以启动 SpringBoot 应用了

启动后,浏览器访问 127.0.0.1 会发现会自动重定向到 https://127.0.0.1

大功告成,配置成功。

Spring Boot 开启https访问(配置SSL证书 实际工作中为了提高数据传输的安全性,采用HTTPS通讯,简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,相比http协议安全。SSL证书需要到CA机构申请证书,仅为测试可以使用jdk生成自签证书... 阅读详情

相关推荐

前后端分离项目,开发和部署时,开启https访问的整体思路(详细步骤)

项目开启https访问的整体思路和过程。

weixin_35676679的博客 7409

SpringBoot中接口加密解密统一处理!

在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用如果我们想保证数据传输的安全,对接口出参加密,入参解密。但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能自定义starter步骤创建工厂,编写功能代码声明自动配置类,把需要对外提供的对象创建好,通过配置类统一向外暴露在resource目录下准备一个名为的文件,以为key,自动配置类为value列表,进行注册。

m0_71777195的博客 1899

SpringBoot添加SSL证书开启HTTPS(单向认证服务端)

SpringBoot项目配置SSL证书,同时开启Http和Https协议,服务器单向认证

生命的意义在于创造和毁灭 1万+

pkcs1解密 springboot_SSL自制证书springboot使用

制作环境:使用jdk自带,在window环境执行。尽量不要在c盘操作,容易拒绝访问(c盘只读)一、制作PKCS12类型1、制作p12证书./keytool -genkey -alias pgiff -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore pgiff.p12 -validity 3650iffadminiff iff iff...

weixin_39900437的博客 328

springboot开启HTTPS

我们平常写完一个接口,其访问一般都是使用http协议我们最终想要的结果是使用HTTPS访问在我们开始实现之前,我们要先搞明白。

m0_56308072的博客 4511

免费给 Spring Boot 加个证书

点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! 在本文中,我们将学习如何执行以下操作: 免费生成有效证书 用它配置一个 Spring Boot 应用程序 到期时续订 在我之前的博客文章中,我们熟悉了带有自签名证书的 Spring Boot 应用程序的配置。自签名证书适用于特定目的,例如测试和开发。但是,如果需要将他的应用程序发送到生产环境,证书应该由已知且合法的证书颁发机构 (CA) 签署。 这些类型的证书通常很昂贵。如果您想使用 T

终码一生 2754

SpringBoot配置SSL证书开启HTTPS安全访问!!!

ssl证书配置开启https安全访问

qq_43532069的博客 5617

Linux上Nginx中开启SSL模块,实现Https访问

Linux上Nginx中开启SSL模块,配置Https访问方式一、Nginx简介二、主题业务背景三、Nginx实现Https方式前期准备SSL证书申请Nginx需要开启SSL模块四、Nginx中配置Https配置前介绍nginx.conf配置详情 一、Nginx简介 1.Nginx是一款轻量级、高性能的web服务器/反向代理服务器,能实现负载均衡。 2.负载均衡的方式有:轮询、权重(weight)、热备(backup)以及IP地址Hash。 二、主题业务背景 一般项目正式上线后,不会再使用服务器的ip地址来

qq_42751248的博客 1670

SpringBoot配置SSL证书实现Https访问

SpringBoot配置SSL证书实现Https访问 SSM架构中是将SSL证书添加到Tomcat中,但是SpringBoot默认是内嵌的Tomcat服务,故直接将ssl证书添加到项目中 SpringBoot是支持直接添加SSL证书的,方法如下 下载证书 2.配置application.yml 3.将文件复制到resource目录下 注:记得打开服务器的443端口 ...

qq_41585840的博客 2112

也来聊下Spring Boot开启SSL

这部分的内容在官方文档中有提到。链接在这儿:Configure SSL 。 网络上关于Spring Boot开启SSL访问的文章有很多。希望这篇文章能带来一点不一样的。 首先,开启SSL访问得有证书,因为是本地访问,那么我们就使用jdk自带的keytool生成一个。 PS C:\Program Files\Java\jdk1.8.0_241\bin> .\keytool -genkey -keyalg RSA -keysize 2048 -keystore D:\keystore.jks 输入

分享技术,分享生活 1761

学习Nging笔记

學習s随笔

weixin_45986935的博客 393

SSL】如何使用SpringBoot内置的tomcat配置SSL,从而实现HTTPS访问(基于阿里云云服务器)

文章目录前言正文SSL证书的申请将证书复制到项目中进行配置再多说一句运行jar包使用https访问总结 前言 最近在捣腾一个小程序,我负责完成后端接口的设计、功能的实现。由于小程序中请求接口需要https格式,因此在使用tomcat部署代码时,出了点小问题,写一篇博客记录一下,方便自己也方便他人。 正文 在实现https访问之前,我们需要下载SSL证书,由于我用的是阿里云服务器,所以可以直接从...

Qonent的博客 9501

HTTPSSpringBoot配置HTTPS链接+腾讯云免费SSL证书

一、背景 安全问题是一个应用从初生走向成熟的标志之一。随着各平台越来越严格的安全性要求(如苹果的应用商店、微信的小程序等要求必须使用HTTPS接入),网站的HTTPS化势在必行。 二、接入要求 要让一个服务接入HTTPS服务,至少需要以下几个步骤: 购买权威机构的SSL证书证书配置到服务器中(如启用SSL、绑定SSL端口等)。 三、免费SSL证书 功能齐全的SSL证书最低都是数千元每年,这...

zhoucheng05_13的博客 5054

SpringBootSSL证书部署+SpringBoot实现HTTPS安全访问

SSL证书部署+SpringBoot实现HTTPS安全访问

永远保持随时离开的技术能力! 2774

使用SpringBoot配置https(SSL证书)

目录 SpringBoot配置https(SSL证书) 仅需三步 1.把tomcat目录里面的.jks文件 2.配置application.yml 3.接下来是重定向 SpringBoot 改造成https访问 1.生成密钥证书 2.将生成的密钥证书拷贝到项目中的resource中 3.修改项目配置文件application.properties 4.启动项目,直接访问项目即可 SpringBoot配置https(SSL证书) 最近在做微信小程序,https

梦想起飞的地方......... 3万+

Tomcat http改成使用https协议(SSL证书

我们想要通过https访问程序,首先需要获得一个数字证书,自己给自己签发而来的证书也叫自签名ssl证书,这种类型的证书可以随意签发,不受任何约束和监督,也不受各大浏览器的信任,基本没什么安全性可言,所以https证书获取不建议使用这种。 而由受信任的CA机构签发的https证书,才是用户们正确的选择。这种CA机构签发证书需要经过一系列的审核,而且是有有效期的,一般不超过2年,能兼容市面上大...

zhangshaopeng的博客 1万+
上一篇: Spring Security 密码加密器 Pbkdf2PasswordEncoder 、 BCryptPasswordEncoder
Bolview
博客等级 码龄8年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值