springboot整合https使用自签名证书实现浏览器和服务器之间的双向认证

server/2024/9/20 7:26:47/ 标签: https, 网络协议, http

效果描述:本地环境  两台以上电脑  可以实现安装客户端证书的电脑可以访问springboot启动项目,没有安装客户端证书的电脑无法访问springboot启动项目

1.操作:需要安装openssl工具

工具包:Win64OpenSSL_Light-3_3_0.exe 或者Win64OpenSSL_Light-3_3_0.msi 

官网:[ Downloads ] - /source/index.html (openssl.org)

验证安装OK: windows +r 输入cmd 打开dos窗口

输入openssl -v

https>https://img-blog.csdnimg.cn/direct/ef3f3ce58bf94736940bcd3c79875e17.png" width="779" />

出现这个表示安装成功

2.在d盘 目录 输入cmd 打开dos窗口执行一下命令 生成根证书 服务端证书(根证书签发) 客户端证书(根证书签发) 信任库 ,并将根证书导入信息库 主题-subj可以修改成自己想要的

# 生成根证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=localhost/OU=BESTI/O=DKY/L=SY/ST=LN/C=CN" -days 365 -out ca.crt

# 生成服务端证书
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=localhost/OU=BESTI/O=DKY/L=SY/ST=LN/C=CN" -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name MyServer -password pass:123456

# 生成客户端证书
openssl genrsa -out client.key 2048
openssl req -new -key client.key -subj "/CN=localhost/OU=BESTI/O=DKY/L=SY/ST=LN/C=CN" -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -name "MyClient" -password pass:123456

# 生成信任库并导入根证书
keytool -import -alias root -file ca.crt -keystore truststore.jks -storepass 123456

3.springboot项目配置

server:
  port: 8081
  ssl:
    enabled: true
    key-store-password: 123456     #密钥存储密码
    key-store: classpath:server.p12
    key-alias: MyServer
    client-auth: need # 需要客户端证书  将服务器证书库当作信任库来使用
    trust-store: classpath:truststore.jks
    trust-store-password: 123456
    trust-store-type: jks

4.在浏览器安装client.p12 客户端证书

https>https://img-blog.csdnimg.cn/direct/fb8615c2ae8f40638e8d1f64885a20be.png" width="1200" />

5.通过https>https协议访问项目,注意选择证书

https>https://img-blog.csdnimg.cn/direct/0044b01d3e6d4b6db19598bb08226942.png" width="1200" />

就可以访问项目了


http://www.ppmy.cn/server/22805.html

相关文章

TablePlus for Mac/Win:开启高效数据开发新纪元

在当今数字化时代,数据的重要性日益凸显。无论是企业还是个人,都需要一款强大而实用的本地原生数据开发软件来提升工作效率。而 TablePlus for Mac/Win 正是这样一款卓越的工具,它为用户带来了全新的体验,让数据开发变得更加轻松、…

CP2532电容触摸检测芯片

这份文件是Chiphomer Technology (Shanghai) Limited提供的CP2532电容触摸检测芯片的用户手册,版本R2.0,发布日期为2008年10月21日。以下是该文件的核心内容概要: 产品简介 CP2532 是一款支持12通道的电容式触摸传感芯片。内嵌高精度电容数…

Stable Diffusion教程:文生图

最近几天AI绘画没有什么大动作,正好有时间总结下Stable Diffusion的一些基础知识,今天就给大家再唠叨一下文生图这个功能,会详细说明其中的各个参数。 文生图是Stable Diffusion的核心功能,它的核心能力就是根据提示词生成相应的…

CSS border边框(理解网页边框制作)

目录 一、border边框介绍 1.概念 2.特点 3.功能 4.应用 二、border边框用法 1.border边框属性 2.边框样式 3.边框宽度 4.边框颜色 5.边框-单独设置各边 6.边框-简写属性 三、border边框属性 四、border边框实例 1.创建带有阴影效果的边框: 2. 创建一个类似标…

C++深度解析教程笔记2

C深度解析教程笔记2 第3课 - 进化后的 const 分析实验-C与C的const区别实验-C与C的const区别&const作用域 第4课 - 布尔类型和引用小结 本文学习自狄泰软件学院 唐佐林老师的 C深度解析教程,图片全部来源于课程PPT,仅用于个人学习记录 第3课 - 进化后…

ElasticSearch教程入门到精通——第五部分(基于ELK技术栈elasticsearch 7.x+8.x新特性)

ElasticSearch教程入门到精通——第五部分(基于ELK技术栈elasticsearch 7.x8.x新特性) 1. Elasticsearch集成1.1 框架集成-SpringData-整体介绍1.2 Spring Data Elasticsearch 介绍1.3 框架集成-SpringData-代码功能集成1.3.1 创建Maven项目1.3.2 修改po…

如何在Flask应用程序中使用JSON Web Tokens进行安全认证

密码、信用卡信息、个人识别号码(PIN)——这些都是用于授权和认证的关键资产。这意味着它们需要受到未经授权的用户的保护。 作为开发者,我们的任务是保护这些敏感信息,并且在我们的应用程序中实施强大的安全措施非常重要。 现在…

振弦采集仪在岩土工程监测中的应用案例与成果展示

振弦采集仪在岩土工程监测中的应用案例与成果展示 河北稳控科技振弦采集仪是一种岩土工程监测仪器,通过采集地下振动信号来获取地下构造的动态特性,具有高精度、高灵敏度和高实时性的特点。在岩土工程监测中,振弦采集仪广泛应用于地基沉降、…

Matlab实现CNN-LSTM模型,对一维时序信号进行分类

1、利用Matlab2021b训练CNN-LSTM模型,对采集的一维时序信号进行分类二分类或多分类 2、CNN-LSTM时序信号多分类执行结果截图 训练进度: 网络分析: 指标变化趋势: 代码下载方式(代码含数据集与模型构建,附…

【python技术】使用akshare抓取东方财富所有概念板块,并把指定板块概念的成分股保存excel 简单示例

最近有个想法,分析A股某个概念成分股情况进行分析,第一反应是把对应概念板块的成分股爬取下来。说干就干 下面是简单示例 import akshare as ak import pandas as pddef fetch_and_save_concept_stocks(name):# 获取指定股票概念的成分股,并…

在 Ubuntu 下使用 clash-for-linux-backup

记录一下如何在 Ubuntu(其它带bash的Linux应该都可以)下运行Clash 有人已经制作了方便使用的脚本, 仓库为 https://github.com/Elegycloud/clash-for-linux-backup, 直接使用这个仓库就可以了. clone 这个仓库 https://github.com/Elegycloud/clash-for-linux-backup 到本地 …

Spring Boot的启动过程深入了解

深入了解Spring Boot的启动过程不仅需要理论上的理解,结合代码示例更能直观地展现其实现细节。以下是一系列代码示例,配合文字说明,帮助您更深入地理解Spring Boot的启动过程: 一、Spring Boot启动入口 import org.springframework.boot.SpringApplication; import org.s…

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件

1.一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正,跪谢…

【JavaEE网络】TCP/IP协议:细节与应用

目录 TCP/IP协议协议格式传输层重点协议UDP协议UDP协议端格式 UDP的特点TCP协议TCP协议端格式 TCP的特点 TCP/IP协议 协议格式 应用层(后端开发必知必会):这一层也有很多现成的协议(后面还会重点介绍HTTP协议,这是做…

C++中的时间相关处理

time.h 在C11之前,C 程序员通常使用 C 语言标准库中的时间和日期函数来处理时间,这些函数的精度通常只有秒级别。这些传统的 C 语言 API 包括 time.h 头文件中定义的函数,如 time(), gmtime(), localtime(), mktime() 等。这些函数使用 time…

UKP3D轴侧图出图按照哪些标准

Q:UKP3d用户在建模时非常顺手,效率高。对UKP3d的出图提出新的一个要求,用户问:轴侧图出图依据哪些标准? A:HG20519是化学工业部发布的一系列标准,主要用于规范化学工业中的工艺设计、设备布置、管道布置等方面。它涉及…

Ubuntu中使有后缀命令指向无后缀的命令

问题: 1、gcc版本不对,系统默认安装gcc-11,gcc --version默认识别gcc-11 2、我希望使用gcc-12,并且已经完成安装 3、系统无法识别CC 解决方法: 1、卸载gcc-11 sudo apt remove gcc-11 2、确认gcc-12已经完成安装 …

基于微信小程序的旅游系统的设计与实现

基于微信小程序的旅游系统的设计与实现 Design and Implementation of a Tourism System based on WeChat Mini Program 完整下载链接:基于微信小程序的旅游系统的设计与实现 文章目录 基于微信小程序的旅游系统的设计与实现摘要第一章 绪论1.1 研究背景与意义1.2 国内外研究…

C语言什么是指向指针的指针?

一、问题 ⼀个指针变量可以指向整型变量、实型变量、字符类型变量,当然也可以指向指针类型变量,那么它到底是什么样⼦的呢? 二、解答 当指针变量⽤于指向指针类型变量时,则称之为指向指针的指针变量。这种双重指针如下图所示。 整…

十大排序算法之——冒泡排序算法(Java实现)及思路讲解

冒泡排序是一种简单的排序算法,通过重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的…