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.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.mfbz.cn/a/329863.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql流程控制函数

1概述 Mysql中的流程控制函数非常重要,可以根据不同的条件,执行不同的流程转换,可以在SQL语句中实现不同的条件选择。MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。 1.1 IF函数 SELECT IF(1 > 0, 正确, 错误);1.2 IFNULL…

JVM实战(22)——jamp和MAT实战

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

JNPF低代码开发平台总体架构介绍

目录 一、JNPF介绍 二、团队能力 三、技术选型 1.后端技术栈 2.前端技术栈 3.数据库支持 四、JNPF界面示意图 五、开发环境 一、JNPF介绍 JNPF是一款企业级低代码开发平台。基于Springboot、Vue技术,采用微服务、前后端分离架构,基于可视化数据建…

【办公技巧】如何设置Word文档部分内容禁止辑?

工作中我们经常会用到Word制作一些文件,文件中有一部分内容不想他人编辑,我们可以设置限制编辑,可以对一部分内容设置限制编辑,具体方法如下: 我们将需要将可以编辑的地方选中,然后打开限制编辑功能 然后勾…

【数据结构和算法】反转链表

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:迭代(双指针) 2.2 方法二:递归 三、代码 3.…

2018年认证杯SPSSPRO杯数学建模C题(第一阶段)机械零件加工过程中的位置识别全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 基于轮廓特征的机械零件位置识别研究 C题 机械零件加工过程中的位置识别 原题再现: 在工业制造自动生产线中,在装夹、包装等工序中需要根据图像处理利用计算机自动智能识别零件位置,并由机械手将零件自动搬…

云服务器CVM_云主机_弹性云计算服务器_腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

SQL Server中数据表的增删查改

文章目录 一、增二、查三、改四、删除 一、增 进行增删查改的前提需要在指定数据库中创建数据表,对这块不大理解的可以先看看前面几期文章: 创建数据库 创建数据表 use StudentManageDB go insert into Students (StudentName,Gender,Birthday,Age,Stu…

ImageNet Classification with Deep Convolutional 论文笔记

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

【QA】Linux-CentOS-全新虚拟机远程连接

文章目录 文章概述尝试连接问题1:解决拒绝连接的问题问题2:root用户可以远程连接了,其他用户不可以 文章概述 新安装的Linux-CentOS虚拟机进行远程连接,需要完成相关配置 尝试连接 虚拟机进入可视化页面,右键点击打…

【Docker】网络配置及自定义网络的使用

一、引言 1、什么是网络配置 Docker的网络配置主要是指Docker容器与外部网络之间的连接设置,包括容器内部的IP地址、端口号等。Docker提供了多种网络模式,包括bridge、host、none等,以满足不同的需求。 默认情况下,Docker使用brid…

android studio Connect timed out

Gradle Distributions 从上面的网站下载对应的版本 放到这个目录下

OpenCV——双边滤波

目录 一、双边滤波二、C代码三、python代码四、结果展示 OpenCV——双边滤波由CSDN点云侠原创。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、双边滤波 双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的…

D2000 debian 11 arm64 aarch64 wine-ce编译安装,运行win32程序 笔记 【失败】

下载源码 yeqiangdebian:~/Downloads$ git clone https://gitee.com/wine-ce/wine-ce Cloning into wine-ce... remote: Enumerating objects: 102, done. remote: Counting objects: 100% (89/89), done. remote: Compressing objects: 100% (83/83), done. remote: Total 10…

【FastAPI】P1 简单实现 a+b

目录 准备工作代码运行 说明:本文通过 FastAPI 实现返回两个参数 ab 的值; 准备工作 默认读者已准备完善 Python IDE工具以及包管理工具。 首先,需要安装 fastapi 和 uvicorn 库,如果没有请使用 pip 进行安装: pip…

k8s的对外服务---ingress

service的作用体现在两个方面: 集群内部:不断追踪pod的变化。他会更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制。 集群外部:类似负载均衡器,把流量IP端口,不涉及转发url(http、htt…

电子雨html代码

废话不多说下面是代码&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Code</title><style>body{margin: 0;overflow: hidden;}</style></head><body><c…

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

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

web开发学习笔记(8.java web后端开发基础知识)

1.使用spring开发的优势&#xff0c;spring发展到今天已经形成了一种开发生态圈&#xff0c;提供了若干个子项目&#xff0c;每个项目用于完成特定的功能。使用spring全家桶&#xff0c;可以做到很多事情&#xff0c;可以很方便的套用很多的组件。 2.pom构成 指定父工程 <p…

Java零基础教学文档第四篇:HTML_CSS_JavaScript(3)

**【JavaScript】 1.JavaScript的简介 1.1 JavaScript的诞生** 在1995年前后&#xff0c;当时世界上的主流带宽为28.8Kbps&#xff0c;现在世界平均下载带宽为21.9Mbps。当时的网民&#xff0c;每提交一次表单&#xff0c;都需要等待很久才能收到服务器的回应&#xff0c;甚至…
最新文章