springboot开启HTTPS

news2024/11/27 23:33:40

目录

一、前言

HTTP和HTTPS的含义以及区别

二、域名映射

三、添加SSL证书

四、Http转Https

五、内网穿透


一、前言

我们平常写完一个接口,其访问一般都是使用http协议

我们最终想要的结果是使用安全的HTTPS来访问

在我们开始实现之前,我们要先搞明白

HTTP和HTTPS的含义以及区别

HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)都是用于在网络上传输数据的协议,但它们之间存在一些关键的区别:

1、安全性

  • HTTP: 是一种不安全的协议,传输的数据是明文的,容易被中间人攻击窃听、篡改或伪造。
  • HTTPS: 在HTTP的基础上使用了安全套接字层(SSL)或传输层安全(TLS)协议,对传输的数据进行加密,提供更高的安全性。

2、加密方式

  • HTTP: 不提供数据加密,数据以纯文本形式传输。
  • HTTPS: 使用加密算法对数据进行加密,使其在传输过程中难以被窃听和解密。

3、端口

  • HTTP: 默认端口是80。
  • HTTPS: 默认端口是443。

4、证书

  • HTTP: 不需要证书。
  • HTTPS: 需要使用SSL证书,用于验证服务器的身份,确保客户端与服务器之间的

5、身份验证

  • HTTP: 不提供身份验证,任何人都可以发送请求。
  • HTTPS: 通过证书进行身份验证,确保客户端连接到正确的服务器

总体而言,HTTPS相对于HTTP更加安全,适用于需要保护用户隐私和数据完整性的场景,尤其是在进行敏感信息传输(如登录、支付)的时候。大多数现代网站都在使用HTTPS来提供更安全的通信。


二、域名映射

域名(Domain Name)是用于标识互联网上资源(如网站、服务器等)的人类可读的文本名称。它的作用主要包括以下几个方面:

  1. 方便记忆: IP地址是用于在网络中标识计算机和设备的数字标签,它们通常是一串数字,例如192.168.1.1。而域名提供了人类友好的方式来标识和记忆网站或服务器,比如www.example.com

  2. 统一资源定位(URL): 域名通常是网址(URL)的一部分。URL是用于定位和访问互联网上资源的地址,包括协议(例如HTTP或HTTPS)、域名、路径等。例如,https://www.example.com/page 中的www.example.com就是域名。

  3. 提供服务: 域名不仅仅是标识,也与服务和内容关联。当用户在浏览器中输入域名时,系统会通过域名解析将其映射到相应的IP地址,然后连接到相应的服务器,从而获取网站的服务和内容。

  4. 品牌建设: 对于企业、组织或个人而言,域名是建立在线品牌和身份的重要组成部分。选择一个有意义、易记且与品牌相关的域名可以提高品牌的可识别性和用户记忆度。

  5. 电子邮件: 域名通常也用于电子邮件地址,例如user@example.com。邮件服务器使用域名来确定邮件的发送和接收地址。

总体而言,域名是互联网上标识和访问资源的一种方便、易记的方式,为用户提供了更友好的访问体验。域名系统(DNS)负责将域名解析为对应的IP地址,使得用户能够通过简单的文本标识来访问互联网上的各种服务和内容。

这里以腾讯云为例,在这里可以购买一个域名

购买完域名之后 就可以点击域名解析,在这里映射你自己的ip地址。需要等待一段时间才会生效。

此时你既可以使用原本的本地localhost进行访问,也可以使用这个域名进行访问,如


三、添加SSL证书

有了SSL证书就可以开启HTTPS协议了,同样以腾讯云为例

我们可以申请一个免费的SSL证书

跟着它的步骤一步步来就可以了

 完成以上操作之后,将刚才的证书下载下来,我们是要在后端部署这个证书

因此选择Tomcat(JKS格式)下载

 将下载完的ssl证书放在resources目录下

 

在配置文件中配置如下信息 

server:
  port: 8888 #端口配置
  ssl: #ssl配置
    enabled: true  # 默认为true
    #key-alias: alias-key # 别名(可以不进行配置)
    # 保存SSL证书的秘钥库的路径
    key-store: classpath:ssl/an1ong.online.jks
    key-password: cb70506mf37q0h
    #key-store-password: 证书密码
    key-store-type: JKS

这里要把key-storekey-password改了

key-store是你的ssl证书的路径与名字

key-password是你的证书密码,密码在下载完自带的keystorePass.txt里面

这样配置完毕之后再启动服务器,就可以使用安全的https来访问了


四、Http转Https

这个时候我们启用了https,但是会发现原本http访问就使用不了了

这个时候我们就可以添加以下配置

package com.wal.config;
import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * https配置,将http请求全部转发到https
 * @author Jacob
 */
@Configuration
public class HttpsConfig {


    @Value("${custom.http-port: 8889}")
    private Integer httpPort;

    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }

}

其中

@Value("${custom.http-port: 8889}")

回去配置文件中寻找custom.http-port的配置属性,如果没有找到就是用后面的默认值8889

意思也就是说这个http也占用了一个端口,只不过你访问这个http的时候就会再跳转至https的资源


五、内网穿透

此时由于我们在解析域名的时候映射的是本地网路ip,那么这就意味着只有与我们在同一个局域网的人才可以找到并访问我们的服务器资源。

就如我们玩我的世界一样,必须在同一个互联网下才可以直接联机。

我们希望自己的服务器可以暴露在公网上,让别人就可以直接访问到。那么就要使用到内网穿透

(同样的我的世界远程联机一般都是用内网穿透来实现的)

这里推荐一个内网穿透网站SakuraFrp (natfrp.com)

 

之后这个frp-now.top:47727 就映射到了 我们的localhost,并且是可以直接在公网上访问到的

然后域名这里映射也改一下,让域名映射我们的内网穿透ip,而内网穿透ip又映射我们的localhost

 

 

则此时我们就实现了一个有着域名的安全的在公网上可访问的服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1392868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端——框架——Vue

提示: 本文只是从宏观角度简要地梳理一遍vue3,不至于说学得乱七八糟、一头雾水、不知南北,如果要上手写代码、撸细节,可以根据文中的关键词去查找资料 简问简答: vue.js是指vue3还是vue2? Vue.js通常指的是…

软件测试|sqlalchemy relationship

简介 SQLAlchemy是一个流行的Python ORM(对象关系映射)库,它允许我们以面向对象的方式管理数据库。在SQLAlchemy中,relationship是一个重要的功能,用于建立表之间的关系。在本文中,我们将详细探讨relation…

阿里云国外云服务器地域、收费标准及活动报价2024新版

阿里云国外服务器优惠活动「全球云服务器精选特惠」,国外服务器租用价格24元一个月起,免备案适合搭建网站,部署独立站等业务场景,阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动: 全球云服务器精选特惠…

【前后端的那些事】评论功能实现

文章目录 聊天模块1. 数据库表2. 后端初始化2.1 controller2.2 service2.3 dao2.4 mapper 3. 前端初始化3.1 路由创建3.2 目录创建3.3 tailwindCSS安装 4. tailwindUI5. 前端代码编写 前言:最近写项目,发现了一些很有意思的功能,想写文章&…

Power Designer 连接 PostgreSQL 逆向工程生成pd表结构操作步骤以及过程中出现的问题解决

一、使用PowerDesigner16.5 链接pg数据库 1.1、启动PD.选择Create Model…。 1.2、选择Model types / Physical Data Model Physical Diagram:选择pgsql直接【ok】 1.3、选择connect 在工具栏选择Database-Connect… 快捷键:ctrlshiftN.如下图&#xff…

第八站:C++面向对象(继承和派生)

继承和派生 派生:由父类派生出子类 继承:子类继承父类(继承不会继承析构函数和构造函数:父类的所有成员函数,以及数据成员,都会被子类继承!) "子类派生出的类"会指向"父类被继承的类",父类就是基类 实例1: 先创建一个父…

Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器

Flask框架小程序后端分离开发学习笔记《2》构建基础的HTTP服务器 Flask是使用python的后端,由于小程序需要后端开发,遂学习一下后端开发。本节提供一个构建简单的本地服务器的代码,仔细看注释,学习每一步的流程,理解服…

react-app框架——使用monaco editor实现online编辑html代码编辑器

文章目录 ⭐前言💖react系列文章 ⭐配置monaco-editor💖引入react-monaco-editor💖引入react-app-rewired💖通过config-overrides.js添加monaco插件配置 ⭐编辑代码的react页面配置💖扩展 可自定义配置语言 ⭐效果⭐总…

使用 mybatis-plus 的mybaits的一对多时, total和record的不匹配问题

应该是框架的问题,去官方仓库提了个issues,等回复 https://github.com/baomidou/mybatis-plus/issues/5923 背景 发现 record是两条,但是total显示3 使用resultMap一对多时,三条数据会变成两条,但是total确是3条 下…

新能源汽车智慧充电桩方案:基于视频监控的可视化智能监管平台

一、方案概述 TSINGSEE青犀&触角云新能源汽车智慧充电桩方案围绕互联网、物联网、车联网、人工智能、视频技术、大数据、4G/5G等技术,结合云计算、移动支付等,实现充电停车一体化、充电桩与站点管理等功能,达到充电设备与站点的有效监控…

[足式机器人]Part2 Dr. CAN学习笔记-Ch04 Advanced控制理论

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - Ch04 Advanced控制理论 1. 绪论2. 状态空间表达State-Space Representation3. Phase Portrait相图,相轨迹3 1. 1-D3 2. 2-D3 3. General Form3 4. Summary3.5. 爱情中的数学-Phase …

Luckysheet类似excel的在线表格(vue)

参考文档&#xff1a;快速上手 | Luckysheet文档 一、引入 在vue项目的public文件夹下的index.html的<head>标签里面引入 <link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/luckysheetlatest/dist/plugins/css/pluginsCss.css /><link relstylesheet hre…

使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA

目前基于大模型的信息检索有两种方法&#xff0c;一种是基于微调的方法&#xff0c;一种是基于 RAG 的方法。 信息检索和知识提取是一个不断发展的领域&#xff0c;随着大型语言模型&#xff08;LLM&#xff09;和知识图的出现&#xff0c;这一领域发生了显着的变化&#xff0…

河南选调生报名照片上传成功,不能大于50kb

河南选调生报名照片要求&#xff1a; 1、上传近期正面免冠证件照 2、照片背景&#xff1a;要求为蓝底 3、照片格式&#xff1a;jpg格式 4、照片宽高比例约为1.3:1.6&#xff0c;大小为130160像素 5、照片大小&#xff1a;50kb以下&#xff0c;最终效果以输出后的大小为准

pytest学习和使用-pytest如何进行分布式测试?(pytest-xdist)

1 什么是分布式测试&#xff1f; 在进行本文之前&#xff0c;先了解些基础知识&#xff0c;什么是分布式测试&#xff1f;分布式测试&#xff1a;是指通过局域网和Internet&#xff0c;把分布于不同地点、独立完成特定功能的测试计算机连接起来&#xff0c;以达到测试资源共享…

SpringMVC JSON数据处理见解6

6.JSON数据处理 6.1.添加json依赖 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置&#xff0c;只需引入以下类库springmvc就可以处理json数据&#xff1a; <!--spring-json依赖--> <dependency><groupId>com.f…

群晖搭建LDAP服务器实现一个账号登录DSM、Gitea、jellyfin

文章目录 前言安装LDAP Server新建群组新增用户 DSM加入LDAPDSM使用LDAP登录 Gitea配置登录取消其登录权限 Jellyfin配置登录 总结 前言 LDAP&#xff08;轻量级目录访问协议&#xff09;是一种用于访问和管理分布式目录服务的协议&#xff0c;它具有以下好处&#xff1a; 集…

flutter开发windows桌面软件,使用Inno Setup打包成安装程序,支持中文

最近使用flutter开发windows桌面软件的时候&#xff0c;想要将软件打包成安装程序&#xff0c;使用了flutter官方推荐的msix打包&#xff0c;但是打包出来的软件生成的桌面快捷方式有蓝色背景&#xff1a; 这个蓝色背景应该是没有设置为动态导致的&#xff0c;windows系统的屏幕…

POE工业交换机:点亮灯光控制与建筑自动化的新时代

随着科技的不断发展&#xff0c;灯光控制和建筑自动化在现代建筑中扮演着重要角色。而POE工业交换机作为一种创新的网络设备&#xff0c;不仅能够为灯光控制和建筑自动化提供稳定可靠的网络通信&#xff0c;还具备便捷的供电功能。本文将探讨POE工业交换机对灯光控制和建筑自动…

Unity URP切换品质和Feature开关的性能问题

现在对我的项目进行安卓端发布&#xff0c;需要切换品质和一些Feature开关。 我是这样做的。 划分品质 首先Renerer分为2个Android和PC&#xff0c;图中其他不用参考。 每个副本的URP Asset分为pc和android&#xff0c;例如图中的 hall和hall_android。 我们可以看到hall用的…