首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SSL之mkcert构建本地自签证书,整合SpringBoot3

SSL之mkcert构建本地自签证书,整合SpringBoot3

原创
作者头像
cheese
修改于 2024-01-17 01:14:50
修改于 2024-01-17 01:14:50
1K0
举报
文章被收录于专栏:网络安全网络安全

什么是 SSL

SSL(Secure Sockets Layer,安全套接层)是一种加密通信协议,最早由Netscape Communications公司于1994年提出。它的主要目的是为网络通信提供安全性,防止数据在传输过程中被窃听、篡改或伪造。SSL技术的核心是公钥加密与私钥解密,在此基础上,发展出了TLS(Transport Layer Security,传输层安全)协议,成为现代网络通信的基础安全手段。

  • 目前大部分生产环境都已经使用SSL,SSL证书一般有如下方法获取:
    • SSL服务商购买、免费SSL服务商通过HTTP验证/API验证、自签SSL证书。
    • SSL服务商购买后一般需要域名邮箱或者域名持有人邮箱验证,而免费SSL服务商一般需要通过HTTP验证或API方式生成DNS记录进行验证。
    • 免费的SSL证书需要HTTP验证,在本地或者局域网内这个显然时无法进行,当然API方式是一个不错的方法,生成的SSL证书既是信任的还免费,但是不适应于所有情况。
    • 自签可以生成任意域名或IP的SSL证书,只不过是不信任的,需要自行将该CA加入信任。自签SSL一般需要使用openssl命令步骤比较繁琐,今天我们借助mkcert工具来一键生成SSL证书并且信任该CA。

mkcert:快速生成自签名证书

在实际应用中,为了确保网络安全,往往需要为网站或服务颁发证书。然而,购买证书的过程较为繁琐,且费用较高。为了解决这一问题,开发者推出了mkcert这个开源工具。 mkcert是一个基于Let's Encrypt证书颁发机构的命令行工具,可以快速为个人或小型网站生成自签名证书。它支持Windows、macOS和Linux平台,操作简单,只需一键即可生成证书。

mkcert的工作流程如下:

  1. 安装mkcert:通过npm或Git安装mkcert库。
  2. 生成证书:在命令行中执行mkcert命令,为指定域名生成自签名证书。
  3. 配置服务器:将生成的证书配置到Web服务器上,如Nginx、Apache等。
  4. 部署证书:重启服务器,即可实现加密通信。 <a name="uUUO9"></a>

window 本地实现自签证书

下载安装

  • 选择 window-amd64.exe 进行下载
  • 版本说明
    • darwin-xxx64 为 macOS 版本
    • linux-xxx64 为 linux 版本
    • xxx-amd64 为 amd 软件架构版本
      • 软件架构软件与 笔记本的 cpu(intel 还是 amd) 没有关系,运行在 windows 平台
    • xxx-arm64 多用于移动端,android,ios,etc.....
  • 下载时注意你自己机器架构类型,大部分情况下win系统为amd64,极少部分为arm64。
  • 直链获取,直接下载 windows-amd63

下载,生成本地 SSL

  • 进入 mkcert.exe 目录下的 dos 页面
  • 执行 mkcert.exe 或 mkcert.exe -help 验证是否安装
  • 执行 mkcert.exe -install 安装本地 CA 认证证书
  • 安装成功之后会在本地C:\Users\UserName\AppData\Local\mkcert 中生成以下两个密钥文件
  • rootCA.pem 为证书
  • rootCA-key 为私钥
  • 查找文件所在目录
  • 按“Windows键+R”调出运行框,输入certmgr.msc命令。打开证书控制台。

生成 pem 自签证书,可供局域网内使用其他主机访问。

  • 在 mkcert.exe 文件同级路径下生成证书文件与私钥文件

通过输出,我们可以看到成功生成了localhost+3.pem证书文件和localhost+3-key.pem私钥文件,只要在 web server 上使用这两个文件就可以了。

使用-psck12 生成*.p12 文件

  • 默认密码为 changeit

SpringBoot 配置 SSL

基于证书文件与私钥文件

  • 将公钥与私钥文件置于 resource 路径下(此处将证书文件与私钥文件进行更名)
  • 在 application.yaml 文件中进行如下配置
代码语言:yaml
AI代码解释
复制
 server:
   ssl:
     #开启SSL支持
     enabled: true 
     #PEM编码的SSL证书文件的路径。
     certificate: classpath:./ssl/certificate.pem
     #SSL证书的PEM编码私钥文件的路径。
     certificate-private-key: classpath:./ssl/private-key.pem
  • 编写测试接口
代码语言:java
AI代码解释
复制
 @RestController
 public class HelloController {
     @GetMapping("/hello")
     public String hello() {
         return "Hello,SSL!";
     }
 }
  • 使用 httpclient 进行测试
代码语言:http
AI代码解释
复制
 GET https://localhost/hello
 
 HTTP/1.1 200 
 Content-Type: text/plain;charset=UTF-8
 Content-Length: 10
 Date: Tue, 16 Jan 2024 05:51:38 GMT
 Keep-Alive: timeout=60
 Connection: keep-alive
 
 Hello,SSL!
 
 Response code: 200; Time: 443ms; Content length: 10 bytes
  • 浏览器访问
  • 查看证书

基于 PKCS12 生成.p12/.ptx 文件

  • mkcert -pkcs args ...
  • 密码为 changeit
  • 将目标为文件更名为 keyStore.p12
  • 将文件置于 springboot 工程 resource 目录下的
  • 在主配置中指定候选配置
代码语言:yaml
AI代码解释
复制
 spring:
   profiles:
     active: p12 #指定application-p12.yaml文件生效
  • 在 application-p12.yaml 中做如下配置
代码语言:yaml
AI代码解释
复制
 server:
   ssl:
     #开启SSL支持
     enabled: true
     #psck12证书路径(保存SSL证书的密钥存储的路径(通常是*.jks,*.pfx,*.p12文件)。)
     #坑点 文件路径不能出现数字,否则resource的URL解析失败
     key-store: classpath:ssl/pkcs/keyStore.p12
     #证书密码(用于访问密钥存储中的密钥的密码。)
     key-password: changeit
     #密钥存储的类型。
     key-store-type: PKCS12
   port: 443 #使用https默认端口
 spring:
   application:
     name: ssl-p12-test  
  • 编写测试接口
代码语言:java
AI代码解释
复制
     //获取证书类型
     @Value(value = "spring.application.name")
     private String certificateType;
 
     @GetMapping("/hello")
     public String hello() {
         return "Hello,SSL of"+certificateType;
     }
  • 启动服务,测试,首次启动 idea 会触发证书信任
  • httpclient 请求结果
  • 访问浏览器

自签名证书的优缺点

自签名证书虽然简化了证书颁发过程,但在实际应用中,仍存在一定的局限性。

优点:

  1. 快速便捷:无需经过第三方证书颁发机构,一键即可生成证书。
  2. 成本低廉:自签名证书无需支付额外费用,适用于个人或小型网站。
  3. 操作简单:易于安装和使用,适用于各类平台。

缺点:

  1. 信任度较低:自签名证书不被浏览器或其他客户端默认信任,需要手动添加信任或使用第三方插件。
  2. 适用范围有限:自签名证书适用于个人或小型网站,但对于大型企业或关键业务场景,仍需选择由权威证书颁发机构颁发的证书。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
Voxel RCNN:高性能3D目标检测网络(AAAI2021)
来源丨https://zhuanlan.zhihu.com/p/390497086
3D视觉工坊
2021/07/27
1.1K0
CVPR2020 | 3DSSD算法性能SOTA并且速度比PointRCNN快两倍
当前有很多种single-stage的(single-stage:一次完成检测步骤,two-stage: 候选区域提取+分类两步完成检测)基于体素的3D目标检测器,但是基于Point的single-stage检测算法仍然有很大的优化空间。本文首先提出了一种轻量级和高效的基于Point的3D single-stage 目标检测器,并命名为3DSSD,该算法很好的平衡了精度和效率上的取舍。传统的基于点的算法为了更好的执行效果,都会存在上采样和细化网络层结构,而本文算法为了降低计算量去掉了这种结构。本文创新性的提出了一种融合采样策略可以检测到少量的具有代表性的点用于实现降采样。为了满足我们对精度和速度的要求,本文提出了一个盒预测网络,包含一个通过anchor-free regression head的3D非中心复制策略构建的候选区域生成层。我们的算法是一个简练的single-stage anchor-free框架,与其他算法相比我们的算法有被不可比拟的优势。我们分别在被广泛使用的Kitti数据和更具挑战性的nuScenes上,对3DSSD算法进行了测试。本文的算法比当前所有的基于体素的single-stage检测算法取得了更好的效果,同时性能达到与two-stage point-based的算法相当的水平,但是推理速度可以超过20Hz,比当前最好的point-based算法快2倍。
CNNer
2020/06/19
1.1K0
CVPR2020 | 3DSSD算法性能SOTA并且速度比PointRCNN快两倍
3D点云two-stage目标检测方法优化综述
和二维图像目标检测一样,3D点云目标检测除了按照输入模态划分为基于点云、基于单目、基于双目或者是多模态融合的方法。也可以按照对proposal的提出和优化分为one-stage、two-stage甚至three-stage的方法。当然也可以再根据是否设置anchor分为anchor-based和anchor-free的工作。下图表示了目前的一些近两年的文章,包括了室内和室外的点云目标检测算法。
3D视觉工坊
2020/12/11
1.1K0
更快更精准的感知,元戎启行提出基于LiDAR的3D物体检测新框架|CVPR 2020
近日,L4级自动驾驶解决方案提供商元戎启行的一篇关于3D物体检测的论文被CVPR2020收录,论文题为“HVNet: Hybrid Voxel Network for LiDAR Based 3D Object Detection”。
CV君
2020/04/07
9840
更快更精准的感知,元戎启行提出基于LiDAR的3D物体检测新框架|CVPR 2020
Lidar-RCNN:基于稀疏点云的3D目标检测网络(CVPR2021)
来源丨https://zhuanlan.zhihu.com/p/390322842
3D视觉工坊
2021/07/27
1.1K0
MMDetection3D | "3Dfy" A General 2D Detector :纯视觉3D检测再思考
这篇文章将沿着近年来 3D 检测的发展脉络,通过和 2D 检测对比,分析 3D 检测中的核心问题,并着重探讨对于纯视觉 3D 检测的再思考。
OpenMMLab 官方账号
2022/01/18
8580
MMDetection3D | "3Dfy" A General 2D Detector :纯视觉3D检测再思考
物体可见性信息在3D检测中的探索CVPR2020(oral)
本文是一篇来自Carnegie Mellon大学和Argo AI的合作工作,目前已经被CVPR20接收(oral),该文的主要内容是基于点云的3D目标检测,与以往的研究内容不同的是,本文基于观察发现在BEV视图中无法区分free和unknown区域,如下图中(a)展示的两个红色框所示,在BEV看上去都是不包含点的free space。但是假如通过lidar的扫描的激光对该图重新绘制如图(b),其中绿色表明为激光扫描到的区域,白色为未知的区域,即白色是被前景物体所遮挡的区域,而绿色是真正被扫描到的,因此,我们可以得到的信息是左边的红框区域表示的是未知,而右边实际上是真正的freespace。因此本文的作者正是利用freespace的信息来提高检测精度。
3D视觉工坊
2020/12/11
9870
物体可见性信息在3D检测中的探索CVPR2020(oral)
CVPR2020 | 3D目标检测点云检测新网络 PV-RCNN
今天这一篇是19年12月30日放到arxiv上的,其实在CVPR2020截止后就一直在关注在关注的一篇文章,毕竟在KITTI的3D检测上高居榜首,并且远远的超过了第二名。如下:
小白学视觉
2020/09/22
1.1K0
CVPR2020 | 3D目标检测点云检测新网络 PV-RCNN
汇总|3D目标检测文章(CVPR2020)
今年CVPR20-paper-list前几天已经出了,所以这里做一点大致的综述介绍在CVPR20上在3D目标检测的一些文章。如下图所示,3D目标检测按照大方向可以分为室外和室内的目标检测,室内场景数据集一般有ScanNet等,该领域研究比较少,笔者注意到的第一篇文章是来自FAIR的voteNet,采用霍夫投票机制生成了靠近对象中心的点,利用这些点进行分组和聚合,以生成box proposals。今年在CVPR20上也至少有两篇该文章的后续工作,分别是来自pointnet之父的Imvotenet,地址是:https://arxiv.org/pdf/2001.10692.pdf;另外一篇MLCVNet来自南京大学和卡迪夫大学的联合工作 ,文章地址:https://arxiv.org/pdf/2004.05679,该文章在vote的基础上利用自注意力机制融合Multi-scale的特征。 此外,在室外场景的目标检测中,可以大致按照输入分为lidar-input,image-input和multi-sensors-fusion的研究工作。
3D视觉工坊
2020/12/11
9560
AAAI2021论文:一个高性能3-D目标两步检测法Voxel R-CNN
AAAI2021录取论文 “Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection“,作者来自中科大和香港中文大学。
3D视觉工坊
2021/01/28
9860
AAAI2021论文:一个高性能3-D目标两步检测法Voxel R-CNN
3D版CenterNet: CenterPoint,小修小改也能刷爆榜单
最近3d目标检测领域出了一篇新作,思路简单,却在nuScenes榜单上高居第二。正式讲解它之前,先附上文章和代码地址:
3D视觉工坊
2020/12/11
2.2K0
3D目标检测深度学习方法数据预处理综述
这一篇的内容主要要讲一点在深度学习的3D目标检测网络中,我们都采用了哪些数据预处理的方法,主要讲两个方面的知识,第一个是representation,第二个数据预处理内容是数据增广。 作为本篇博文的引言,我们先给一种博主制作的比较重要的3D检测方法图鉴,如下,就笔者的个人理解,今年的CVPR出现了很多的one-stage的方法,同时出现了很多融合的方法,这里的融合有信息融合,有representation融合,同时根据近两年的发展来看,voxel-based的方法占据了主导地位,这是得益于卷积结构优越性(point-based方法采用pointnet++结构,是MLP搭建的),但是今年的oral文章3D-SSD是一篇在point-based方法上很有建树的文章,所以在3D检测中了解主要的representation代表方法也是很重要的。
3D视觉工坊
2020/12/11
6780
3D目标检测深度学习方法数据预处理综述
3D点云 | 基于深度学习处理点云数据入门经典:PointNet、PointNet++
不同于图像数据在计算机中的表示通常编码了像素点之间的空间关系,点云数据由无序的数据点构成一个集合来表示。因此,在使用图像识别任务的深度学习模型处理点云数据之前,需要对点云数据进行一些处理。目前采用的方式主要有两种:
AI算法修炼营
2020/06/09
10.2K0
近期激光雷达点云的3D目标检测方法
来源丨https://zhuanlan.zhihu.com/p/370650927
计算机视觉
2021/05/20
1.1K0
3D目标检测深度学习方法之voxel-represetnation内容综述(二)
前面的一篇文章:3D目标检测深度学习方法中voxel-represetnation内容综述(一)中笔者分享了如果采用voxel作为深度学习网络输入的backbone的几个重要的模块。也就是目前比较流行的One-stage的方法SECOND的1.5版本,在KITTI和Nuscenes的榜单上都能算是19年比较经典和高效的方法,这一篇文章,笔者填一下上一篇文章的坑,上一篇文章中说到目前的方法可以按照精度和速度两个方面做出研究,其中因为voxel-representation的方法本身是高效的,因此主要在速度上做出研究的方法还是远远少于在精度上做文章的。 笔者看到的在精度上做文章的研究工作主要可以分为如下几种:(1)refine(2)loss(3)fusion(4)backboe -structure(5)others。 下面笔者就这几种改进方式选择一些典型的文章做一定的简单分享,如果要深入理解文章的改进,还是很需要研究文章本身和阅读其代码的。
3D视觉工坊
2020/12/11
7200
3D目标检测深度学习方法之voxel-represetnation内容综述(二)
3D目标检测深度学习方法之voxel-represetnation内容综述(一)
笔者上一篇文章有介绍了3D目标检测中比较重要的数据预处理的两个方面的内容,其一是几种representation的介绍,分别是point、voxel和grap三种主要的representation,具体的可以表示为如下(这里的grids即是voxel)。上一篇文章也分析了这三种representation的优缺点:(1)point-sets保留最原始的几何特征,但是MLP感知能力不及CNN,同时encoder部分下采样采用了FPS(最远点采样)(目前就采样方法的研究也挺多,均匀采样,随机采样或者特征空间采样其异同都是值得思考研究的),FPS采样对比voxel的方法会更加耗时(2)voxel的方法在精度和速度上都是独树一帜的,但是不可避免的会有信息丢失,同时对体素参数相对比较敏感。(3)grah的表示在3D目标检测上,在CVPR20上才提出来,就Graph的backbone时间消耗比较久,比point的方法还要就更多,但是直观上看graph的结构增加了边信息更加容易机器感知。
3D视觉工坊
2020/12/11
1.2K0
3D目标检测深度学习方法之voxel-represetnation内容综述(一)
基于三维点云场景的语义及实例分割:RandLA-Net和3D-BoNet
公开课地址:https://www.shenlanxueyuan.com/open/course/53
深蓝学院
2020/09/09
3.5K0
基于三维点云场景的语义及实例分割:RandLA-Net和3D-BoNet
FCOS:全卷积一阶段Anchor Free物体检测器,多种视觉任务的统一框架
这是众多Anchor Free中比较有影响力的一篇文章,不光是效果好,而且思路清楚,简单,不需要任何trick,并将众多的视觉任务统一到了一个框架中,值得一看。
OpenCV学堂
2020/09/25
4730
FCOS:全卷积一阶段Anchor Free物体检测器,多种视觉任务的统一框架
CVPR 2021 | SensatUrban: 城市规模点云数据集
研究人员构建了一个城市规模的摄影测量点云数据集,并通过大量实验,指出了大规模三维点云语义理解中面临的问题,包括如何对大规模点云进行采样和分区,是否需要使用RGB颜色信息,类别分布不均衡以及泛化性能等。
点云PCL博主
2021/03/24
2K0
CVPR 2021 | SensatUrban: 城市规模点云数据集
做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点
目标检测是计算机视觉中的经典问题之一。凭借大量可用数据、更快的 GPU 和更好的算法,现在我们可以轻松训练计算机以高精度检测出图像中的多个对象。
机器之心
2020/07/28
1.7K0
做目标检测,这6篇就够了:CVPR 2020目标检测论文盘点
推荐阅读
相关推荐
Voxel RCNN:高性能3D目标检测网络(AAAI2021)
更多 >
LV.1
知名扫地机公司VSLAM算法工程师
目录
  • 什么是 SSL
  • mkcert:快速生成自签名证书
    • mkcert的工作流程如下:
    • window 本地实现自签证书
      • 下载安装
      • 下载,生成本地 SSL
      • 生成 pem 自签证书,可供局域网内使用其他主机访问。
      • 使用-psck12 生成*.p12 文件
    • SpringBoot 配置 SSL
      • 基于证书文件与私钥文件
      • 基于 PKCS12 生成.p12/.ptx 文件
    • 自签名证书的优缺点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档