springboot开启HTTPS

目录

一、前言

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.jkskey-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;@Beanpublic TomcatServletWebServerFactory servletContainer() {TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();tomcat.addAdditionalTomcatConnectors(httpConnector());return tomcat;}@Beanpublic 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.mzph.cn/news/630653.shtml

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

相关文章

烟火识别视频分析系统的应用-河北消防机器人项目

在当前的智能化、信息化时代背景下,河北省消防部门采纳了一项革命性的技术方案 —— 烟火识别视频分析系统,结合消防机器人的使用,大幅提升了火灾预防与应急处理能力。该项目的核心在于通过高精度的视频监控,实时分析识别潜在的火…

【笔记】Helm-3 主题-6 Chart仓库指南

Chart仓库指南 本节介绍如何创建和使用chart仓库。在高层级中,chart仓库是打包的chart存储和分享的位置。 社区的Helm chart仓位于 Artifact Hub ,欢迎加入。不过Helm也可以创建并运行您自己的chart仓库。该指南将介绍如何操作。 Artifact Hub 先决条…

Microsoft Word 设置底纹

Microsoft Word 设置底纹 References 打开文档页面,选中特定段落或全部文档 在“段落”中单击“边框”下三角按钮 在列表中选择“边框和底纹”选项 在“边框和底纹”对话框中单击“底纹”选项卡 在图案样式和图案颜色列表中设置合适颜色的底纹,单击“确…

S32K3系列 --- 硬件I2C Mcal配置

前言 网上看到很多I2C的教程,基本都是模拟I2C,现在S32K3的芯片支持硬件I2C,我想着就配一个硬件的出来吧,这边记录一下,供大家学习。 一、I2C原理 这里主要教大家如何去配置,去使用。 原理的话可以参考这篇文章: 一文搞懂I2C通信总线_i2c通信的详细讲解-CSDN博客 I2…

Spring5深入浅出篇:Spring工厂设计模式拓展应用

Spring5深入浅出篇:Spring工厂设计模式拓展应用 简单工厂实现 这里直接上代码举例子 UserService.java public interface UserService {public void register(User user);public void login(String name, String password); }UserServiceImpl.java public class UserService…

Three.JS教程1环境搭建、场景与相机

Three.JS教程1环境搭建、场景与相机 一、Three.JS简介二、环境搭建1. 开发准备2. 安装 three.js3. 新建文件index.htmlmain.js 4. 关于附加组件5. 启动 三、创建场景1. 场景的概念2. 相机的概念3. 相机的几个相关概念(1)视点(Position&#x…

Ability to Use Oracle Data Pump to Export and Import the Unified Audit Trail

Ability to Use Oracle Data Pump to Export and Import the Unified Audit Trail 从18c版本开始才能使用数据泵工具导出统一审计的记录

DAY03_Spring—自动装配注解模式优化XML文件

目录 1 Spring注解模式1.1 自动装配1.1.1 说明1.1.2 配置规则 1.2 注解模式1.2.1 关于注解的说明1.2.2 注解使用原理1.2.3 编辑配置文件1.2.4 属性注解 1.3 实现MVC结构的纯注解开发1.3.1 编写java代码1.3.2 编辑xml配置文件1.3.3 编写测试类1.3.4 关于注解说明1.3.5 关于Sprin…

Ubuntu20.4 Mono C# gtk 编程习练笔记(二)

界面设计习练后,下面写一些程序设计心得。 程序结构 先看一下程序总体结构,先在program.cs中找到main入口,在命名空间下是MainClass类,Main函数进入后首先建立应用程序环境 Application.Init,然后对MainWindow进行实…

【嘉立创EDA-PCB设计指南】3.网络表概念解读+板框绘制

前言:本文对网络表概念解读板框绘制(确定PCB板子轮廓) 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2,将设计的原理图转为了PCB,在PCB界面下出现了所有的封装,以及所有的飞线属性&…

【开源】基于JAVA语言的智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

【Docker】安装 Nginx 容器并部署前后端分离项目

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 &…

GRU门控循环单元神经网络的MATLAB实现(含源代码)

在深度学习领域,循环神经网络(RNN)因其在处理序列数据方面的卓越能力而受到广泛关注。GRU(门控循环单元)作为RNN的一种变体,以其在捕捉时间序列长距离依赖关系方面的高效性而备受推崇。在本文中&#xff0c…

SpringBoot 中使用 Quartz 创建定时任务

文章目录 一、使用示例二、运行原理 一、使用示例 自定义 job: Slf4j public class MyJob extends QuartzJobBean {Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {log.info("MyJob start...");l…

JavaWeb后端——Maven

maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理 maven项目对象模型简称POM, maven解决问题: 1. 添加第三方jar包,maven将 jar 包放在本地仓库中统一管理,使用时用坐标的方式引用即可 2. 解决 jar 包之间的依…

Facebook与环境保护:社交媒体的可持续发展

在当今社会,科技发展日新月异,而社交媒体作为数字时代的代表之一,正面临着巨大的责任与机遇。随着全球环境问题的凸显,社交媒体平台如Facebook也逐渐认识到自身在环保可持续发展中的角色。本文将深入探讨Facebook在环境保护方面的…

统计学-R语言-5.3

文章目录 前言分位数统计量的标准误总结 前言 本篇文章即为概率与分布的最后一篇文章。 分位数 分位数函数是累积分布函数的反函数。 p-分位数是具有这样性质的一个值:小于或等于它的概率为p。 根据定义,中位数即50%分位数。 分位数通常用于置信区间的…

vite 打包优化

✨专栏介绍 在当今数字化时代,Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序,就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术,以及各种框架、库和工具…

【机器学习实例讲解】机器学习-鸢尾花数据集多分类第02课

问题定义与理解: 明确机器学习任务的目标,是分类、回归、聚类、强化学习还是其他类型的问题。 确定业务背景和需求,了解所处理数据的现实意义。 数据收集: 根据任务目标从各种来源获取原始数据,可以是数据库、文件、…

Spring5深入浅出篇:Spring与工厂设计模式简介

Spring5深入浅出篇:Spring与工厂设计模式简介 什么是Spring Spring是⼀个轻量级的JavaEE解决⽅案,整合众多优秀的设计模式轻量级 1. 对于运⾏环境是没有额外要求的开源 tomcat resion jetty收费 weblogic websphere 2. 代码移植性⾼不需要实现额外接⼝JavaEE的解…