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

devtools/2024/9/20 4:03:03/ 标签: 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/devtools/16702.html

相关文章

mac下安装python并编写脚本实现s3上传功能

mac下安装python并编写脚本实现s3上传功能 步骤一:安装 Python 31. 安装 Homebrew(如果尚未安装):2. 使用 Homebrew 安装 Python 3:3. 验证安装:4.安装boto3: 步骤二:编写 S3 上传脚…

golang上传文件到ftp服务器

之前有个业务需要把文件上传到ftp服务器,写了一个上传ftp的功能 package ftpimport "context"type Client interface {// UploadFile 上传文件UploadFile(ctx context.Context, opt *UploadFileOpt) error }type UploadFileOpt struct {Data […

机器视觉检测为什么是工业生产的刚需?

机器视觉检测在工业生产中被视为刚需,主要是因为它具备以下几个关键优势: 提高精度与效率:机器视觉系统可以进行高速、高精度的检测。这对于保证产品质量、减少废品非常关键。例如,在生产线上,机器视觉可以迅速识别产品…

维态思(上海)环保科技有限公司 | 2024全国水科技大会暨技术装备成果展览会

嘉宾简介 胡建龙 维态思(上海)环保科技有限公司 总经理 报告题目:微生态滤床 植物工厂——小城镇生活污水生态净化及零排放案例分享 国家注册设备工程师(给排水)、上海市(合作交流)五四青年…

六、Java+FFmpeg,实战直播推流

目录 类 JavaFFmepegTest run() 方法 openFFmpegExe() 方法 main() 方法 总结 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io

深入了解Eureka:微服务架构中的服务发现与注册中心

引言 微服务架构的兴起使得应用程序变得更加模块化和可扩展。在这种架构下,服务发现与注册中心扮演着至关重要的角色。本文将深入探讨Eureka作为服务发现与注册中心的作用、优缺点、重要性以及其服务架构。 一、Eureka的作用 Eureka是Netflix开源的一款用于构建分…

【力扣】16. 最接近的三数之和

16. 最接近的三数之和 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1…

【Webgl_glslThreejs】搬运分享shader_飘落心形

来源网站 https://www.shadertoy.com/view/4sccWr效果预览 代码演示 将shadertory上的代码转成了threejs可以直接用的代码,引入文件的material,并在创建mesh或已有物体上使用material即可,使用时请注意uv对齐。 import { DoubleSide, Shad…

游戏新手村18:游戏广告渠道与广告形式

上文我们说到,渠道为王,渠道可以为我们带来流量和用户,进而带来收入。我们可以通过哪些渠道导入用户呢?每个渠道有哪些优劣呢?在进行游戏营销推广的时候我们该如何选择呢? 根据付费性质,我们可…

iOS runtime

—参考文章— 暂时没有 一、如何在Xcode中使用runtime Xcode默认是不建议开发者使用runtime的,所以在Xcode直接使用runtime的语法是会报错误的。 如果要在Xcode中使用runtime的语法,是需要配置一下才可以使用,配置方法如下图: 首…

LabVIEW多通道数据采集系统

LabVIEW多通道数据采集系统 在当今的数据采集领域,随着技术的不断进步和应用需求的日益增长,对数据采集系统的速度、稳定性和灵活性要求也越来越高。基于千兆以太网和LabVIEW的多通道数据采集系统,以其高速的数据传输能力和强大的数据处理功…

microk8s拉取pause镜像卡住

前几天嫌服务器上镜像太多占空间,全部删掉了,今天看到 microk8s 更新了 1.30 版本,果断更新,结果集群跑不起来了。 先通过 microk8s.kubectl get pods --all-namespaces 命令看看 pod 状态。 如上图可以看到,所有的业…

【kotlin】利用by关键字更加方便地实现装饰器模式

关于kotlin中的by关键字的用法,kotlin官方文档属性委托这一节讲得很清楚。 简单来说就是这样的,假设存在一个接口Component如下: interface Component {fun method1(): IntArrayfun method2(a: Int)fun method3(a: Int, str: String) }那么对…

Kotlin语法入门-密封类和密封接口(11)

Kotlin语法入门-密封类和密封接口(11) 文章目录 Kotlin语法入门-密封类和密封接口(11)十一、密封类和密封接口1、密封类2、密封接口 十一、密封类和密封接口 1、密封类 在Kotlin中,密封类(Sealed Class)是一种特殊的类,用于表示受…

Linux fdformat命令教程:如何进行软盘的低级格式化(附案例详解和注意事项)

Linux fdformat命令介绍 fdformat是一个用于对软盘进行低级格式化的命令。这个命令通常用于对软盘进行底层的格式化操作,以便于在软盘上创建新的文件系统。 Linux fdformat命令适用的Linux版本 fdformat命令在大多数Linux发行版中都可以使用,包括但不…

NXP应用随记(七):S32K3XX复位与启动阅读记录

目录 1、复位过程 1.1、概述 1.2、复位产生模块 1.2.1、上电复位 1.2.2、破坏性复位 1.2.3、功能复位 1.3、芯片复位及引导概述 1.4、重置和启动流程图 1.5、复位块序列 2、上电复位 3、破坏性复位 4、功能复位 5、设备配置格式(DCF) 6、重置专题 6.1、重置引脚行…

怎么选合适的图纸加密软件?迅软DSE加密软件功能、安全与易用性并存

利用加密软件进行图纸加密,确保企业的图纸信息能够得到有效保护,防止非法访问和数据泄露。 一、挑选图纸加密软件的注意事项? 用户反馈:参考其他用户的反馈和评价,了解软件在实际使用中的表现和潜在问题。兼容性&…

《A Discriminative Feature Learning Approach for Deep Face Recognition》阅读笔记

论文标题 《A Discriminative Feature Learning Approach for Deep Face Recognition》 一种用于深度人脸识别的判别性特征学习方法 作者 Yandong Wen、Kaipeng Zhang、Zhifeng Li 和 Yu Qiao 来自深圳市计算机视觉与专利重点实验室、中国科学院深圳先进技术研究院和香港中…

牛客NC199 字符串解码【中等 递归,栈的思想 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/4e008fd863bb4681b54fb438bb859b92 相同题目: https://www.lintcode.com/problem/575 思路 解法和基础计算器1,2,3类似,递归参考答案C struct Info {string str;int stopindex;Info(str…

linux 系统文件目录颜色及特殊权限对应的颜色

什么决定文件目录的颜色和背景? 颜色 说明 栗子 权限白色表示普通文件 蓝色表示目录 绿色表示可执行文件 浅蓝色链接文件 黄色表示设备文件 红色 表示压缩文件 红色闪烁表示链接的文件有问题 灰色 表示其它文件 可以用字符表示文件的类型&am…