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.hqwc.cn/news/412009.html

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

相关文章

GEE:随机森林回归器投票方法的优化与修改

作者:CSDN @ _养乐多_ 在随机森林中,随机生成的每棵决策树都对输入数据进行分类或回归,并产生一个输出。对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。例如,如果有五棵树的分类输出为 [0.1, 0.2, 0.3, 0.1, 0.1],则平均数是0.…

ELF解析06 - 入口参数与傀儡进程

04 里面的重定位表没讲完,这里继续,我们说过重定位的类型有很多,04 里面基本只介绍了一种,就是 plt 表。重定位不仅仅发生在代码里面,还会发生在数据里面,比如so程序里面对一些全局变量的引用,它…

OpenCV——双边滤波

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

通过开发一个桶装水上门送水订水小程序,可以解决哪些问题?

提高订水效率:用户可以直接在小程序上完成订水流程,无需拨打水站电话或前往水站,节省了用户的时间和精力。 方便管理用户信息:水站可以建立用户管理系统,对用户的订单信息、送水地址等进行管理,方便后续的送…

思绪记忆:伦敦金是以美元计价的黄金!

伦敦金是以美元计价的黄金衍生投资品种,是一种交易网络遍及各个主要市场的黄金保证金交易方式。目前投资者通过香港到伦敦金平台入市,只需要付出2%的保证金,就可以拥有一手100盎司、价值20多万的标准化黄金合约的交易权益,无论在涨…

使用 ClassFinal 对SpringBoot jar加密加固并进行机器绑定

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️&#…

恒驰喜讯 | 荣获华为云优秀服务伙伴奖!华为云生态大会2024开启联合解决方案新篇章

1月15日-16日,以“领航新开局,共赢新生态”为主题的华为云生态大会2024在华为云贵安数据中心云上屯隆重启幕。华为云和全国生态伙伴、开发者,在新年伊始,共同见证华为云生态战略的新进展、伙伴政策的新升级,分享源自优…

7.图像验证码与cookie操作

有很多第三方的公司可以解决图像验证码问题,但是人家都需要费用,比如 云码 验证码识别价格_验证码识别费用多少钱-云码 超级鹰 超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 如果不需要搞定太专业的验证码&#xff0…

Vue3 + Electron框架读取程序外部配置文件

网上找了一堆都不行,根据这个步骤来肯定能用 1. 在项目下新建一个config.json文件 2. json文件中写入一些配置 3. vue.config.js中配置打包时把config.json文件copy到应用目录下 pluginOptions:{electronBuilder:{nodeIntegration:true,builderOptions: {extraReso…

软件是什么?前端,后端,数据库

软件是什么? 由于很多东西没有实际接触,很难理解,对于软件的定义也是各种各样。但是我还是不理解,软件开发中的前端,后端,数据库到底有什么关系呢! 这个问题足足困扰了三年半,练习时…

【数据结构】八大排序之计数排序算法

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.计数排序简介及思想 二.计数排序代码实现 三.计数排序复杂度分析 📌时间复杂度 📌空间复杂度 结语 一.计数排序简介及思想 计数排序(Cou…

7、DETR:基于Transformer的端到端目标检测

目录 一、论文题目 二、背景与动机 三、创新与卖点 四、具体实现细节 模型架构 简易代码 五、结论与展望 六、一些资料 一、论文题目 End-to-End Object Detection with Transformershttps://arxiv.org/abs/2005.12872 二、背景与动机 在计算机视觉领域,目标…