SpringBoot添加SSL证书,开启HTTPS(单向认证服务端)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一、前言

通过HTTP协议传输数据,并不会对数据进行加密,所以存在着一定的风险,容易被抓包破解数据,而且现在各种浏览器对使用HTTP协议的网站也会提示不安全。通过将HTTP协议升级为HTTPS协议可以提高安全系数。使用HTTPS协议就需要了解一下SSL协议。

SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
服务器认证阶段:
1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
SSL协议提供的安全通道有以下三个特性:
机密性:SSL协议使用密钥加密通信数据。
可靠性:服务器和客户都会被认证,客户的认证是可选的
完整性:SSL协议会对传送的数据进行完整性检查。
从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公司组织制定了SET协议,为网上信用卡支付提供了全球性的标准。
以上摘自百度。

二、SpringBoot中配置SSL(单向)

SSL证书的颁发必须是公开公认的CA机构颁发的,在浏览器中才会被认可是合法的;
SSL证书是针对域名的,单域名的SSL证书对非该域名也是无效的通配域名证书对一级域名和二级域名都有效。
例如:你有一个域名为 abc.com的一级域名,解析了一个.abc.com的二级域名和 b.abc.com的二级域名。当你为a.abc.com申请的单域名证书对b.abc.com域名是无效的。
(PS:我看了网上很多通过keytool生成证书的,通过keytool生成的证书是自签证书,不被浏览器锁认可)

1、环境

spring boot 2.2.2
maven
一个域名(各大域名商有售,阿里、腾讯、华为)
SSL证书(阿里云上有免费的SSL证书,有效期一年)

2、客户端单向认证服务端代码实战-JKS格式的证书

tomcat中支持JKS格式与PFX两种格式的证书,下面先进行JKS格式的证书演示。
(1)准备一个JKS后缀的SSL证书。(域名.jks)
(2)快速构建一个springboot模块
(3) 在resources下新建一个ssl目录,复制SSL证书到该目录下
在这里插入图片描述
(4)在项目配置文件application.ym

前后端分离项目,开发和部署时,开启https访问的整体思路(详细步骤) 项目开启https访问的整体思路和过程。 阅读详情

相关推荐

【通信】https 客户端-服务端 实现

目录 0.HTTPS HTTPS VS HTTP区别 1.单向认证 1.1 服务端 1.2 客户端curl 1.3 浏览器 1.4 Java httpClient实现 2 双向认证 2.1 服务端 2.2 客户端 curl 2.2.1 永久信任curl 2.2.2 curl携带客户端证书 2.2.3 Java客户端实现 0.HTTPS HTTPS与HTTP的区别就是基...

opi 4123

SpringBoot开发——整合SSL证书启用HTTPS协议

SpringBoot整合SSL证书启用HTTPS

bjzhang75的博客 3396

HTTPSHTTPS证书

HTTPS协议 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。具体介绍以前先来介绍一下以前常见的HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文,因此使用HTTP协议传输隐私信息非常不安全。HTTP使用80端口通讯,而HTTPS占用443端口通讯。在计算机网络上,HTTPS

qq_35789269的博客 3998

SpringBoot配置SSL证书

SpringBoot项目配置SSL证书

等风来的博客 6236

深入浅出springboot框架学习笔记—SpringBoot配置SSLhttps

本篇文章主要内容: SpringBoot配置SSLhttpsSpringBoot全局异常处理 SpringBoot 404页面处理 接下来让我们一起探讨三大框架之一的springboot框架: SpringBoot配置SSLhttpsSpringBoot可以通过在application.properties或application.yml配置文件中配置各种server.ssl.*属性来声明性使用SSLhttps),比如下面的例子在application.properties

d5821476的博客 2080

SpringBoot 如何配置 SSL

SSL(安全套接层)是一种用于加密通信的协议。它通过将数据加密传输来保护通信的机密性和完整性。SSL协议通常用于Web浏览器和Web服务器之间的安全通信,以确保用户的敏感数据(如密码、信用卡号等)在传输过程中不被窃取或篡改。

u013749113的博客 3790

HTTPS】Spring Boot客户端与服务端单向认证和双向认证实例

【引言】 在上篇博客中,了解了关于SSL的很多理论,本篇博客主要是总结下基于Spring Boot实现HTTPS方式请求下客户端与服务端进行双向认证的实例搭建。 有了上一篇博客的认识,对于SSL的流程已经很清楚了。使用HTTPS,通常情况下,是客户端需要校验服务端,也就是一个单向认证的过程。同时,服务端也可以校验客户端,从而达到客户端与服务端双向认证的目的。 【证书生成】 在项目搭建前,我们先使用...

Dream it Possible 9662

基于springboot实现的https单向认证和双向认证(java生成证书

1、java生成HTTPS证书: 既然是双向验证,就需要双方的密钥,我们服务端称为localhost,而客户端称为client。需要生成双方的密钥文件,并把对方的cert导入自己的密钥文件里。整个过程如下: 注意:密码统一为:changeit,这个密码自己可以设置,然后记住就可以了。 生成服务端密钥文件localhost.jks: keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystor

码说芯语的博客 8340

SSL证书配置(https访问接口, 单向认证和双向认证)

>如果你从上级或者其他人又或者证书提供商那里申请到ssl证书, 要如何才能解锁更多姿势呢? (1) 直接配置在项目上面 (2) 配置在项目启动所依赖的tomcat上 (3) 配置在nginx上( 单向认证, 双向认证, 多域名认证) ... ... 而这里则主要介绍了两种配置方式, **第一种是在项目中直接配置, 另一种就是通过nginx来进行配置** ... 后续持续更新

时间静止 5762

数据和安全②HTTPS单向和双向认证

前言 示例 使用SpringBoot模拟服务端和客户端,使用okhttp作为httpClient工具。 如果对https相关理论不太熟悉和理解的可以看上一篇数据和安全①加解密理论概述 Okhttp https设置 https://square.github.io/okhttp/https/ 证书在线格式转换 https://myssl.com/cert_convert.html 私钥格式转换 https://www.chinassl.net/ssltools/convert-key.html

Zzhou1990的博客 1万+

SpringBoot 使用 SSL 证书开启 HTTPS 访问

1.导入证书 腾讯云证书 腾讯云下载的证书,解压后的文件结构为: SpringBoot 只需要 tomcat 下的文件即可 tomcat下的文件: keystorePass.txt :保存证书密码 www...jksJKS 证书 注意: 这里的 JKS 证书下载下来时的名称为:域名.jks。要在 SpringBoot 中使用的话,必须将文件名修改为不含 "."的...

Bolview的博客 3233

SpringBoot配置SSL证书开启HTTPS安全访问!!!

ssl证书配置开启https安全访问!

qq_43532069的博客 5617

https单向认证和双向认证demo(SpringBoot+okhttp3+keytool自签名)

目录 一、前言 二、软件版本 三、单向认证 四、双向认证 一、前言 HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 S...

阿瑟与非 4059

【备忘录系列】springboot2 https 单向和双向证书 配置到内嵌tomcat

一、环境 springboot :2.1.3.RELEASE tomcat:springboot内嵌tomcat 二、基础概念: 1.证书类型介绍: .DER .CER,文件是二进制格式,只保存证书,不保存私钥。 .PEM,一般是文本格式,可保存证书,可保存私钥。 .CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。 .PFX .P12,二进制格式,同时...

hupoling的专栏 9万+

SpringBoot整合自签名SSL证书,转变HTTPS安全访问(单向认证服务端

HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面,事物皆具两面性,它也是有不足之处的。通信使用明文(不加密),内容可能会被窃听。不验证通信方的身份,因此有可能会遭遇伪装。无法证明报文的完整性,所以有可能会遭篡改等。因HTTP有存在通信上的不足,HTTPS因此诞生(HTTPS 是身披 SSL 外壳的 HTTP),HTTPS采用非对称加密,从而相对安全。

刘某人妙妙屋 1785

SpringBoot配置Https访问

Https协议 HTTP(Hypertext transfer protocal)是一种详细规定了浏览器和万维网服务器之间相互通信的规则,通过因特网传送万维网文档的数据传送协议。 HTTPS(Hypertext transfer protocal over Secure Socket Layer)是以安全为目标的http通道,https的安全基础是ssl,因此加密的详细内容就需要sslhttps协议需要到ca申请证书(一般免费的证书很少)。 http是超文本传输协议,信息是明文传输的,https则是具有

Nicholas_GUB的博客 1万+

spring-boot https证书双向认证配置

spring-boot https证书双向认证配置

杨小熊学习笔记 3742

基于SpringBoot的双向HTTPS认证配置

文章目录一、最终效果二、步骤2.1 单向认证2.1.1 创建SpringBoot项目2.1.2 利用keytool生成密钥库(keystore)2.1.3 对SpringBoot进行配置2.1.4 测试2.2 双向认证2.2.1 利用keytool生成用户端密钥库并安装2.2.2 导出用户端数字证书2.2.3 服务器端信任用户端数字证书2.2.4 配置Spring Boot2.2.5 测试三、思考...

BlackButtonCC's life! 4965

SpringBoot实战:自签CA证书实现HTTPS双向认证全流程解析

本文详细解析了如何在SpringBoot中通过自签CA证书实现HTTPS双向认证的全流程。从OpenSSL环境准备、根CA证书生成到服务端与客户端证书的创建与配置,再到SpringBoot的具体实现和常见问题排查,为开发者提供了一套完整的实战方案。特别适用于金融支付、内部微服务通信等高安全性需求的场景。

algae的博客 948
上一篇: 异常:Invalid keystore format,spring boot配置ssl证书格式不合法解决
下一篇: RDM-Redis可视化工具图文安装教程
喵喵@香菜
博客等级 码龄10年 1万+粉丝 126原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵@香菜

感谢观众老爷送的一发火箭!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值