spring boot整合https协议
整体目录

1. 生成SSL证书
首先,使用keytool生成一个自签名证书。打开命令行工具并运行以下命令:
keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365
这将创建一个名为keystore.jks的文件,其中包含一个自签名的证书。你将被要求输入一些信息,如密码、名字等。
2. 配置Spring Boot应用以使用HTTPS
在你的Spring Boot项目中,将生成的keystore.jks文件放在src/main/resources目录下。然后,在application.properties文件中添加以下配置:
server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=your_keystore_password
server.ssl.key-password=your_key_password
server.ssl.key-store-type=JKS
请确保将your_keystore_password和your_key_password替换为你在生成密钥库时使用的密码。
server.port=8443
server.ssl.key-store=classpath:mykeystore.jks
#JKS类型-storepass参数值,P12和key password一样
server.ssl.key-store-password= changeit
server.ssl.key-password=test123456
#PKCS12 或者JKS
server.ssl.key-store-type=JKS
#server.ssl.key-store-type=PKCS12
3. 编写控制器
创建一个简单的REST控制器来测试HTTPS服务。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author: jg* @date: 2024-11-14* @description:*/
@RestController
@RequestMapping("/https")
public class HttpsController {@GetMappingpublic String test(){return "https 测试方法";}
}
4. 启动Spring Boot应用
确保你的Spring Boot主类位于正确的包结构中,并且包含@SpringBootApplication注解。例如:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author: jg* @date: 2024-11-14* @description:*/
@SpringBootApplication
public class HttpsDemoApplication {public static void main(String[] args) {SpringApplication.run(HttpsDemoApplication.class,args);}
}
5.测试
postman
设置File->Settings


curl命令
curl -k https://172.30.4.81:8443/https
keytool生成证书
PKCS12
1.生成一个新的私钥和证书请求 (CSR)
首先,你需要生成一个新的私钥和证书签名请求 (CSR)。
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.p12 -storetype PKCS12 -dname "CN=example.com, OU=IT, O=MyOrg, L=City, ST=State, C=Country" -ext SAN=dns:example.com,dns:www.example.com,ip:192.168.1.1
在这个命令中:
-alias myalias指定别名。-keyalg RSA指定使用的算法。-keysize 2048指定密钥大小。-validity 365指定证书有效期为365天。-keystore mykeystore.p12指定密钥库文件名。-storetype PKCS12指定密钥库类型为 PKCS12。-dname "CN=example.com, OU=IT, O=MyOrg, L=City, ST=State, C=Country"指定证书的 Distinguished Name (DN)。-ext SAN=dns:example.com,dns:www.example.com添加 SAN 扩展,包含多个域名。
2. 导入证书到密钥库
如果你已经有一个现有的证书,并且想要将其导入到新的 PKCS12 密钥库中,可以使用以下命令:
keytool -importcert -file mycertificate.crt -alias myalias -keystore mykeystore.p12 -storetype PKCS12
在这个命令中:
-file mycertificate.crt指定要导入的证书文件。-alias myalias指定别名。-keystore mykeystore.p12指定密钥库文件名。-storetype PKCS12指定密钥库类型为 PKCS12。
3. 验证密钥库内容
你可以使用以下命令来查看密钥库中的条目,确保它们已正确导入:
keytool -list -v -keystore mykeystore.p12 -storetype PKCS12
这个命令会显示密钥库中的所有条目及其详细信息,包括 SAN 信息。
4. 配置 Spring Boot 使用 PKCS12 密钥库
在 Spring Boot 配置文件中,更新你的 SSL 配置以使用新的 PKCS12 密钥库:
application.properties
server.ssl.key-store=classpath:mykeystore.p12
server.ssl.key-store-password=yourpassword
server.ssl.key-alias=myalias
server.ssl.key-store-type=PKCS12
JKS
使用 keytool 生成证书的步骤如下:
-
生成密钥对和证书签名请求 (CSR):
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -keystore mykeystore.jks -validity 365 -storepass changeit
如果需要设置SAN
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -keystore mykeystore.jks -validity 365 -storepass changeit -dname "CN=example.com, OU=IT, O=MyOrg, L=City, ST=State, C=Country" -ext SAN=dns:example.com,dns:www.example.com,ip:192.168.1.1
keytool -genkeypair -alias mycert -keyalg RSA -keysize 2048 -validity 365 -dname "CN=172.30.4.81, OU=IT, O=MyOrg, L=City, ST=State, C=Country" -keystore keystore.jks -storepass changeit
-alias myalias指定别名。-keyalg RSA指定使用的算法。-keysize 2048指定密钥大小。-validity 365指定证书有效期为365天。-keystore mykeystore.jks指定密钥库文件名。-dname "CN=example.com, OU=IT, O=MyOrg, L=City, ST=State, C=Country"指定证书的 Distinguished Name (DN)。-ext SAN=dns:example.com,ip:192.168.1.1添加 SAN 扩展,包含多个域名和一个 IP 地址。
-
导出证书:
keytool -exportcert -alias myalias -keystore mykeystore.jks -file mycert.cer -storepass changeit -
将证书导入到目标服务器
现在,将生成的证书(mycert.crt)复制到172.30.4.83服务器上,并将其导入到目标服务器的密钥库中。
scp mycert.crt user@172.30.4.83:/path/to/destination
在172.30.4.83服务器上执行以下命令:
keytool -importcert -alias mycert -file /path/to/destination/mycert.crt -keystore keystore.jks -storepass changeit
-
将证书导入到信任库(可选):
keytool -importcert -file mycert.cer -keystore truststore.jks -alias myalias -storepass changeit -noprompt -
验证密钥库:
keytool -list -v -keystore mykeystore.jks -storepass changeit
使用keytool将pkcs12文件导出crt证书
keytool -importkeystore -srckeystore yourfile.p12 -srcstoretype pkcs12 -destkeystore temp.jks -deststoretype jks
这里 yourfile.p12 是你的 p12 文件名,temp.jks 是临时生成的 JKS 文件名。
从 JKS 文件中导出证书:
keytool -exportcert -alias <alias> -keystore temp.jks -rfc -file certificate.crt
这里 <alias> 是你在导入 p12 文件时使用的别名,temp.jks 是临时生成的 JKS 文件名,certificate.crt 是输出的 crt 文件名。
openssl将p12文件导出为crt文件
-
使用以下命令将p12文件转换为PEM格式的证书和私钥:
openssl pkcs12 -in yourfile.p12 -out certificate.pem -clcerts -nokeys这里
yourfile.p12是你的p12文件名,certificate.pem是输出的PEM格式证书文件名。 -
如果你只需要导出证书部分,可以使用以下命令从PEM文件中提取证书:
openssl x509 -in certificate.pem -out certificate.crt
相关文章:
spring boot整合https协议
整体目录 1. 生成SSL证书 首先,使用keytool生成一个自签名证书。打开命令行工具并运行以下命令: keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这将创建一个名为keystore.jks的文件…...
服务器开机即占用大量内存,解决
1.服务器开机两分钟不到,内存使用飙升 [rootlocalhost ~]# top #查看是否有了明显的内存占用程序 2.上述未果,查看是否有违规的开机自启项 [rootlocalhost ~]# chkconfig --list 3.上述无果,查看开启启动加载项内容 上网搜后ÿ…...
Keil uvision的edition
0 Preface/Foreword 0.1 参考网址 https://zhuanlan.zhihu.com/p/456069876 1 Keil版本介绍 版本介绍: Keil Lite(免费版):最多32KB代码,无法使用中间件Keil Essential(基础版):没…...
[每周一更]-(第123期):模拟面试|消息队列面试思路解析
文章目录 22|消息队列:消息队列可以用来解决什么问题?1. 你用过消息队列吗?主要用来解决什么问题?异步、削峰和解耦你能各举一个例子吗?2. 你用的是哪个消息队列?为什么使用它而不用别的消息队列?3. 为什么你一定要用消息队列?不用行不行?不用有什么缺点?4. 在对接多…...
游戏引擎学习第12天
视频参考:https://www.bilibili.com/video/BV1yom9YnEWY 这节没讲什么东西,主要是改了一下音频的代码 后面有介绍一些alloc 和malloc,VirtualAlloc 的东西 _alloca 函数(或 alloca)分配的是栈内存,它的特点是: 生命周…...
深入理解Flutter生命周期函数之StatefulWidget(一)
目录 前言 1.为什么需要生命周期函数 2.开发过程中常用的生命周期函数 1.initState() 2.didChangeDependencies() 3.build() 4.didUpdateWidget() 5.setState() 6.deactivate() 7.dispose() 3.Flutter生命周期总结 1.调用顺序 2.函数调用时机以及主要作用 4.生…...
413: Quick Sort
解法: #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…...
vue之axios根据某个接口创建实例,并设置headers和超时时间,捕捉异常
import axiosNew from axios;//给axios起个别名//创建常量实例 const instanceNew axiosNew.create({//axios中请求配置有baseURL选项,表示请求URL的公共部分,url baseUrl requestUrlbaseURL: baseURL,//设置超时时间为20秒timeout: 20000,headers: {…...
Pandas数据透视表:交叉分析与聚合计算
大家好,在数据分析中,数据透视表(Pivot Table)是一种强大的工具,用于交叉分析和聚合计算。Pandas库中的数据透视表功能,使我们能够在多维数据中快速生成汇总表、统计特定维度的聚合数据,帮助揭示…...
软件设计师考试大纲
文章目录 一 、考 试 说 明1. 考试目标2. 考试要求3. 考试科目设置 二、考 试 范 围考试科目1:计算机与软件工程知识1. 计算机系统基础知识1.1计算机内数据的表示及运算1.2 其他数学基础知识1.3 计算机硬件基础知识1.3.1 计算机系统的组成、体系结构分类及特性1.3.2 存储系统1.…...
一文说清C++类型转换操作符(cast operator)
一 前言 大家在编程时,一定会遇到要做类型转换的应用场景。 但是,C风格的类型转换太强大,太危险,它允许将一个给定类型转换成我们想要的任何其他类型。 所以在C中,提供了一些更安全和更明确的类型转换操作符ÿ…...
MOSFET电路栅源极GS之间并联电容后,MOS炸管原因分析
1、前言 在介绍,在进行MOSFET相关的电路设计时,可能会遇到MOSFET误导通的问题,为了解决此问题,我们提出了两种方法,一种是增大MOSFET栅极串联电阻的阻值,另外一种是在MOSFET栅-源极之间并联一个电容&#…...
gitHub常用操作
gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork,fork下来:将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址(fork…...
[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]
YOLOv5是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv5具有更高的…...
Java 垃圾回收机制(GC)概览
简介 Java垃圾收集、堆和运行时编译器默认选择 jdk1.9开始,默认使用G1收集器,GC Threads的最大数量受堆大小和可用CPU资源限制初始堆大小为物理内存的1/64最大堆大小为物理内存的1/4分层编译器,同时使用C1和C2 JVM 垃圾收集器可以为配置优…...
Kafka节点服役和退役
1 服役新节点 1)新节点准备 (1)关闭 bigdata03,进行一个快照,并右键执行克隆操作。 (2)开启 bigdata04,并修改 IP 地址。 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改完…...
Git如何简单使用
文章目录 GitGitlabGitLab和GitHub有什么区别?Gitlab简单使用Gitlab常用指令Git Git是一个分布式版本控制系统。 它用于记录文件的修改历史,方便多人协作开发软件等项目。例如一个软件开发团队,成员们会频繁修改代码,Git可以追踪每个人的修改内容、时间等信息。 主要功能…...
酒水分销积分商城小程序开发方案php+uniapp
酒水分销积分商城小程序开发,开发语言后端php,前端uniapp。核心功能模块:酒水商城、积分商城、二级分销、抽奖、优惠券。可以二开或定制。协助部署搭建。...
MTU-内核态(数据链路层或网络接口上能够传输的最大数据包大小)
MTU(最大传输单元,Maximum Transmission Unit)是网络中用于表示数据链路层或网络接口上能够传输的最大数据包大小。 1. 工作原理 MTU 决定了一个数据包(包括头部和数据部分)的最大长度。它影响到数据的传输ÿ…...
React的基础API介绍(一)
目录 useEffect1. 替代生命周期方法2. 副作用管理3. 依赖项数组4. 多次使用5. 与闭包配合6. 支持异步操作7. 减少样板代码 注意事项useEffetct是如何拿到变量count最新的值?1. 每次渲染都会创建新的函数作用域2. 闭包捕获最新的状态值3. useEffect 的执行时机 useLa…...
大模型查询质量评估新范式(Perplexity算法底层逻辑首次公开)
更多请点击: https://codechina.net 第一章:大模型查询质量评估新范式(Perplexity算法底层逻辑首次公开) Perplexity(困惑度)并非仅是语言模型训练阶段的监控指标,而是当前大模型查询质量评估中…...
AIGC 检测‘信息密度‘到底是什么?嘎嘎降 AI 帮你 AI 率从 65% 降到 8%
AIGC 检测"信息密度"到底是什么?嘎嘎降 AI 帮你 AI 率从 65% 降到 8% AIGC 检测算法 4.0 版本看的 5 项底层指标里——信息密度权重排第二(约 25%)。理解了这一项你才知道为什么"工整学术风"也会被判 AI。这篇文章把&quo…...
Oracle 19c单实例安装后,别忘了做这5个安全与性能基础配置(CentOS 7版)
Oracle 19c单实例安装后的5个关键安全与性能配置指南(CentOS 7环境) 刚完成Oracle 19c的安装只是数据库管理的第一步。许多初级DBA常犯的错误是认为安装成功就意味着工作结束,实际上默认配置往往存在严重的安全漏洞和性能隐患。本文将带您完成…...
如何通过WindowResizer精准掌控Windows窗口尺寸布局
如何通过WindowResizer精准掌控Windows窗口尺寸布局 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在现代多任务工作环境中,Windows窗口尺寸的灵活性直接关系到工作效…...
摄影师的终极批量水印神器:semi-utils让照片保护变得如此简单
摄影师的终极批量水印神器:semi-utils让照片保护变得如此简单 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 还在为一张张手动添加水印…...
昇腾310开发板内存告急?手把手教你在Ubuntu虚拟机上离线转换YOLOv5模型(非root用户避坑指南)
昇腾310开发板内存告急?Ubuntu虚拟机离线转换YOLOv5模型全攻略 当开发者手头只有一块内存有限的昇腾310开发板时,模型转换工作往往会遇到硬件资源不足的困境。本文将详细介绍如何在普通x86架构的Ubuntu虚拟机上,完成YOLOv5模型的离线转换全流…...
FPGA验证核心:Vivado中功能与代码覆盖率的实战指南
1. 项目概述:为什么验证是FPGA开发的重中之重? 如果你刚接触FPGA开发,可能会觉得写代码(HDL)是最核心、最花时间的部分。但等你真正上手几个项目,尤其是那些需要流片或者部署到关键系统的项目后,…...
观察Taotoken在多模型自动路由下的服务可用性与容灾表现
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken在多模型自动路由下的服务可用性与容灾表现 在构建基于大模型的应用时,服务的稳定性是保障业务连续性的基…...
告别内存泄漏!LabVIEW调用Halcon后必须做的资源释放操作(附HImage、HWindow关闭方法)
LabVIEW与Halcon混合编程中的资源管理实战指南 在工业自动化检测领域,LabVIEW与Halcon的结合堪称黄金搭档——前者提供灵活的流程控制,后者拥有强大的图像处理能力。但许多工程师在开发长期运行的视觉系统时,常常遇到一个隐形杀手:…...
突破60帧限制!《原神》帧率解锁工具完全指南
突破60帧限制!《原神》帧率解锁工具完全指南 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》的60帧限制感到困扰吗?想让你的高刷新率显示器发挥真正…...
