广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot中支持Https协议的实现
  • 378
分享到

SpringBoot中支持Https协议的实现

SpringBoot支持Https协议SpringBootHttps协议 2023-01-28 06:01:40 378人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、https 简介二、获取 Https 证书三、在 SpringBoot 中引入 https四、请求转发一、https 简介 超文本传输安全协议(HyperText Trans

一、https 简介

超文本传输安全协议(HyperText Transfer Protocol Secure),缩写:HTTPS;常称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上。

二、获取 https 证书

我们可以直接借助 Java 自带的 jdk 管理工具 keytool 来生成一个免费的 https 证书

1、进入jdk安装目录,我的是在C:\Program Files\Java\jdk1.8.0_201\bin

cd /C:\Program Files\Java\jdk1.8.0_201\bin

2、执行以下命令获取数字证书

keytool -genkey -alias Tomcathttps -keyalg RSA -keysize 2048 -keystore D:\httpsKey.p12 -validity 365

命令含义如下:

genkey:表示要创建一个新的密钥。
alias:表示 keystore 的别名。
keyalg:表示使用的加密算法是 RSA ,一种非对称加密算法。
keysize:表示密钥的长度。
keystore:表示生成的密钥存放位置。
validity:表示密钥的有效时间,单位为天。
其中 D:\httpsKey.p12 是生成证书文件的地址

按照图中步骤进行操作:

证书生成过程

3、以上步骤执行完后,我们在D盘会发现一个 httpsKey.p12 的文件,如下:

http证书文件

三、在 springBoot 中引入 https

1、我们将生成的 httpsKey.p12 拷贝到SpringBoot项目中的 resources 目录下

2、并在配置文件 application.yml 中加入以下配置:

server:
  port: 8080
  ssl:
    key-store: classpath:httpsKey.p12
    key-alias: tomcathttps
    key-store-passWord: 123456

key-store表示密钥文件名。
key-alias表示密钥别名。
key-store-password就是在cmd命令执行过程中输入的密码

3、我们在 resources 目录下的 templates 目录下加入一个index.html文件,文件内容:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>主页面</title>
</head>
<body>
<h1>hello https!!!</h1>
</body>
</html>

4、启动项目,访问http://localhost:8080,此时会出现:

bad request

我们使用https协议来访问:https://localhost:8080
此时页面显示:

不是私密连接

这是因为我们自己生成的 https 证书不被浏览器认可,(实际项目中只需要更换一个被浏览器认可的 https 证书即可),我们直接点击继续访问就可以了:

hello https

这样我们就成功的以https协议访问了项目

四、请求转发

考虑到 Spring Boot 不支持同时启动 HTTP 和 HTTPS ,为了解决这个问题,我们这里可以配置一个请求转发,当用户发起 HTTP 调用时,自动转发到 HTTPS 上,配置文件如下:

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


@Configuration
public class RequestConfig {
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = 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);
            }
        };
        factory.addAdditionalTomcatConnectors(createTomcatConnector());
        return factory;
    }

    private Connector createTomcatConnector() {
        Connector connector = new
                Connector("org.apache.coyote.http11.Http11NIOProtocol");
        connector.setScheme("http");
        // Http 的请求端口为 8081
        connector.setPort(8081);
        connector.setSecure(false);
        // https 的端口为 8080
        connector.setRedirectPort(8080);
        return connector;
    }
}

在这里,我们配置了 Http 的请求端口为 8081,所有来自 8081 的请求,将被自动重定向到 8080 这个 https 的端口上。当我们再去访问 http 请求,就会自动重定向到 https。

到此这篇关于SpringBoot中支持Https协议的实现的文章就介绍到这了,更多相关SpringBoot支持Https协议内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot中支持Https协议的实现

本文链接: https://www.lsjlt.com/news/178186.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot中支持Https协议的实现
    目录一、https 简介二、获取 https 证书三、在 SpringBoot 中引入 https四、请求转发一、https 简介 超文本传输安全协议(HyperText Trans...
    99+
    2023-01-28
    SpringBoot支持Https协议 SpringBoot Https协议
  • springboot支持https请求的实现
    目录前言一、借助keytools二、详细步骤三、配置spring项目支持https总结前言 众所周知,http是不安全的协议,那么要使服务器支持https,该如何在spring项目中...
    99+
    2023-01-28
    springboot https请求 springboot https
  • SpringBoot同时支持HTTPS与HTTP的实现示例
    目录1. 背景2. 制作HTTPS证书3. 让SpringBoot支持Https4. 让SpringBoot同时支持HTTP5. 小结1. 背景 有时候SpringBoot需要支持H...
    99+
    2022-11-13
  • SpringBoot配置SSL同时支持http和https访问实现
    目录第一步:生成证书第二步:获取证书第三步:增加SSL配置第四步:配置https访问传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前...
    99+
    2022-11-13
  • Linux中如何实现支持Exchange ActiveSync协议的邮件客户端
    这篇文章将为大家详细讲解有关Linux中如何实现支持Exchange ActiveSync协议的邮件客户端,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Exchange ActiveSync 是一种 Ex...
    99+
    2023-06-28
  • Go语言中怎么实现HTTPS加密协议
    Go语言中怎么实现HTTPS加密协议,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Go语言Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况...
    99+
    2023-06-04
  • SpringBoot中配置SSL的同时支持http和https访问
    目录第一步:生成证书第二步:获取证书第三步:增加SSL配置第四步:配置https访问传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前...
    99+
    2022-11-13
  • Springboot支持Emoji表情的实现方法
    前言 本篇的实现方式是 仅需后端处理,且不涉及数据库的存储编码格式修改。 正文 效果展示图: 传参 转化存储: 解析返回页面显示: 开始 1. pom.xml加入依赖 : ...
    99+
    2022-11-12
  • Python中SSH协议的实现 - Pa
    操作系统维护时, 一般会通过ssh命令连接到远端服务器, 进行某些操作. 那Python中如何完成这些呢, 当然也能执行ssh命令, 但还有更优雅的方式, 借助Paramiko, 其为实现了SSHv2协议的一开源项目, 下面主要使用了它的s...
    99+
    2023-01-31
    协议 Python SSH
  • SpringBoot中怎么通过配置Profile实现多环境支持
    本篇文章给大家分享的是有关SpringBoot中怎么通过配置Profile实现多环境支持,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Profile1.多Profile文件我们...
    99+
    2023-06-20
  • Redis中通信协议RESP是怎么实现的
    这篇文章主要介绍了Redis中通信协议RESP是怎么实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。RESPRESP(Redis Ser...
    99+
    2022-10-19
  • HTML5中WebSocket协议的实现原理是什么
    这篇文章将为大家详细讲解有关HTML5中WebSocket协议的实现原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。WebSocket协议的目的是为了工作于现有的网络基础设施。作为这...
    99+
    2023-06-09
  • python中opencv支持向量机的实现
    目录支持向量机理论基础SVM使用介绍例子介绍完整程序支持向量机 支持向量机(Support Vector Machine, SVM)是一种二分类模型,目标是寻找一个标准(称为超平面)...
    99+
    2022-11-13
  • Java中的HTTP协议:如何实现分布式实时通信?
    HTTP协议在Java中的应用越来越广泛,特别是在分布式实时通信方面。本文将介绍Java中HTTP协议的相关知识,并演示如何利用HTTP协议实现分布式实时通信。 HTTP协议是Web应用程序中最常用的协议之一,它使用TCP/IP协议作为传输...
    99+
    2023-10-27
    http 分布式 实时
  • HTTP协议在Java教程中的实现原理是什么?
    HTTP协议是现今最流行的网络协议之一,Java语言也提供了多种方式来实现HTTP协议。在本文中,我们将深入探讨HTTP协议在Java教程中的实现原理。 HTTP协议简介 在探讨HTTP协议在Java中的实现原理之前,我们需要先了解HTT...
    99+
    2023-06-17
    教程 http 自然语言处理
  • go语言中的udp协议及TCP通讯实现示例
    目录udp协议server端client端TCP通讯(基本)服务端客户端TCP通讯并发服务器服务端客户端udp协议 server端 package main import ( "f...
    99+
    2022-11-13
  • ChatGPT的API中怎么实现支持多轮对话
    这篇文章主要介绍“ChatGPT的API中怎么实现支持多轮对话”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ChatGPT的API中怎么实现支持多轮对话”文章能帮助大家解决问题。一、问题ChatGP...
    99+
    2023-07-05
  • 在ChatGPT的API中支持多轮对话的实现方法
    目录一、问题二、具体实现三、需要注意的问题四、如何自己训练一个模型五、可以训练ChatGPT的api吗?一、问题 ChatGPT的API支持多轮对话。可以使用API将用户的输入发送到...
    99+
    2023-02-28
    ChatGPT的API支持 多轮对话 ChatGPT API对话 ChatGPT多轮对话
  • HTTP协议在Java容器中的实现原理和优化方法?
    HTTP协议在Java容器中的实现原理和优化方法 HTTP协议作为现代互联网的基础协议之一,已成为了我们日常生活中不可或缺的一部分。Java作为一门流行的编程语言,其在Web开发领域的应用也非常广泛。本文将介绍HTTP协议在Java容器中的...
    99+
    2023-06-15
    http django 容器
  • HTTP协议在Java和Git中的应用——Spring框架的实现方式。
    HTTP协议是应用层协议中最为重要的一种。它是Web应用程序的基础,也是现代互联网应用架构中的核心组成部分。在Java和Git中,HTTP协议的应用非常广泛,而Spring框架的实现方式则是其中一种。 一、Java中的HTTP应用 Jav...
    99+
    2023-07-24
    http git spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作