Windows下使用netty的SelfSignedCertificate进行SSL加密通信

在使用netty的时候,经常需要对通信进行SSL加密,这就需要相关的证书和秘钥;

当我们在自己的开发环境中进行测试的时候,有一个非常简单的方法来创建证书和私钥文件,netty提供了SelfSignedCertificate类。

 SelfSignedCertificate ssc = new SelfSignedCertificate();

只需要这样一行代码,Netty就会帮我们自动生成自签名的证书和私钥。

生成的证书和私钥文件在Windows下的Temp目录:

C:\Users\xxx\AppData\Local\Temp

文件名前缀为:keyutil_example.com_

一般为:

C:\Users\xxx\AppData\Local\Temp\keyutil_example.com_13784598500529759262.crt
C:\Users\xxx\AppData\Local\Temp\keyutil_example.com_9168231614251199235.key

PS: 自动生成的证书和私钥会在程序结束后自动删除,当然也可以调用ssc.delete()进行手动删除。

下面记录下,使用SelfSignedCertificate的过程中的一些问题:

1. 代码执行过程中,报错:

Exception in thread "main" java.security.cert.CertificateException: No provider succeeded to generate a self-signed certificate. See debug log for the root cause.at io.netty.handler.ssl.util.SelfSignedCertificate.<init>(SelfSignedCertificate.java:157)at io.netty.handler.ssl.util.SelfSignedCertificate.<init>(SelfSignedCertificate.java:110)at io.netty.handler.ssl.util.SelfSignedCertificate.<init>(SelfSignedCertificate.java:88)at io.netty.handler.ssl.util.SelfSignedCertificate.<init>(SelfSignedCertificate.java:79)at com.freddy.netty.n12_securechat.SecureChatServer.main(SecureChatServer.java:25)
Caused by: java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProviderat io.netty.handler.ssl.util.SelfSignedCertificate.<init>(SelfSignedCertificate.java:154)... 4 more
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProviderat java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)... 5 more

SelfSignedCertificate会自动将证书文件和私钥文件生成在系统的temp文件夹中,所以这个类在生产环境中是不推荐使用的。默认情况下该类会使用OpenJDK's X.509来生成证书的私钥,如果不可以,则使用 Bouncy Castle作为替代。

解决:添加boucycastle的依赖

        <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.68</version></dependency><dependency><groupId>org.bouncycastle</groupId><artifactId>bcpkix-jdk15on</artifactId><version>1.68</version></dependency>

参考:

RocketMQ 初次尝试受挫篇【ssl错误】_rocketmq failed to create sslcontext for server-CSDN博客

java.io.tmpdir_${java.io.tmpdir}-CSDN博客

【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/24652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UG12编程怎么没有:深度解析与困惑探寻

UG12编程怎么没有&#xff1a;深度解析与困惑探寻 UG12编程作为现代制造业的重要工具&#xff0c;其应用广泛且功能强大。然而&#xff0c;对于初学者或某些特定需求的用户来说&#xff0c;有时可能会遇到“UG12编程怎么没有”的困惑。这种困惑可能源于软件功能的不熟悉、操作…

[stm32]——uc/OS-III多任务程序

目录 一、获取uC/OS-III源码 二、移植源代码 &#xff08;1&#xff09;建立工程文件 &#xff08;2&#xff09;移植uC/OS-III源码 &#xff08;3&#xff09;添加工程组件和头文件路径 &#xff08;4&#xff09;添加头文件路径 三、修改代码 总结 一、获取uC/OS-III源码 …

【Vue】声明式导航-自定义类名(了解)

问题 router-link的两个高亮类名 太长了&#xff0c;我们希望能定制怎么办 解决方案 我们可以在创建路由对象时&#xff0c;额外配置两个配置项即可。 linkActiveClass和linkExactActiveClass const router new VueRouter({routes: [...],linkActiveClass: "类名1&quo…

【中篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了Yolo v1, 今天从Yolov2开始。 YOLOv2:更好、更快、更强 2017 年 7 月一个闷热的星期二下午,雷德蒙(Joseph Redmon, Yolo创始人)再次走上舞台。 …

Android gradle kts 8.0以上版本配置签名和修改APK输出名字

目录 概述修改签名配置新建签名文件目录配置签名信息使用签名信息打包 修改APK名称 概述 之前写过一篇文章是通过Kotlin的Dsl结合gradle编写的插件来管理项目依赖&#xff0c;我是从一个开源项目叫DanDanPlayAndroid项目上学到的&#xff0c;那时还没有使用toml文件来管理项目…

【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南

文章目录 1 引言2 准备工作2.1 安装 Docker2.1.1 在 Linux 上安装 Docker2.1.2 在 macOS 上安装 Docker2.1.3 在 Windows 上安装 Docker 2.2 验证 Docker 安装 3 拉取 confluentinc/cp-kafka Docker 镜像3.1 拉取镜像3.2 验证镜像 4 运行 Kafka 容器4.1 启动 ZooKeeper4.2 启动…

【原创】springboot+mysql农业园区管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

公差基础(互换性和测量基础)

互换性概念&#xff1a; 图纸设计是理论的&#xff0c;理性的&#xff0c;没有误差的&#xff0c;但是实际上加工上市有误差的。 所以说&#xff0c;实际加工出来的零件是否符合要求&#xff0c;我们需要对图纸上的尺寸精度&#xff0c;几何精度&#xff0c;表面粗糙度进行说明…

STM32关于uc/OS-III的多任务程序

目录 一、UCOS-III源码获取 二、HAL库工程的建立 1.RCC配置 2.SYS配置 3.USART1配置 4.GPIO配置 5.时钟配置 6.项目配置 三、KEil文件添加 1.文件复制 2.KEil工程添加 3.添加文件路径 四、代码修改 1. 2.修改文件app_cfg.h中代码 3.修改include.h的代码 4.修改…

【传知代码】DETR[端到端目标检测](论文复现)

前言&#xff1a;想象一下&#xff0c;当自动驾驶汽车行驶在繁忙的街道上&#xff0c;DETR能够实时识别出道路上的行人、车辆、交通标志等目标&#xff0c;并准确预测出它们的位置和轨迹。这对于提高自动驾驶的安全性、减少交通事故具有重要意义。同样&#xff0c;在安防监控、…

【二进制部署k8s-1.29.4】十、coredns的安装部署

文章目录 简介 一.下载并修改coredns配置文件二.安装coredns三.验证coredns的安装 简介 本章节主要讲解安装coredns-v1.11.1的安装&#xff0c;并进行验证。 第一章.安装前软件准备及系统初始化阶段 第二章.证书及配置文件的准备 一.下载并修改coredns配置文件 下载地址&#x…

未来已来:Angular、React、Vue.js——前端框架的三大巨头

目录 前言 一、Angular框架 特点和优势 核心技术和应用场景 二、React框架 特点和优势 核心技术和应用场景 三、Vue.js框架 特点和优势 核心技术和应用场景 总结&#xff1a; 前言 在Web前端开发领域&#xff0c;随着技术的不断发展&#xff0c;出现了众多优秀的框…

APP开发技术的变迁史

随着移动互联网的迅猛发展&#xff0c;APP&#xff08;应用程序&#xff09;已经成为人们日常生活中不可或缺的一部分。从最初的简单工具到如今的智能平台&#xff0c;APP开发技术在这十年间经历了翻天覆地的变化。本文将从多个维度探讨近十年来APP开发技术的变迁史&#xff0c…

【Python学习路线(课程大纲+Python视频教程+下载地址)_python 教程下载。】

目前Python已经成为最受欢迎的程序设计语言之一。Python的设计哲学是“优雅”、“明确”、“简单”。 学习Python具有多重显著的好处。首先&#xff0c;Python的语法简洁易读&#xff0c;降低了编程的入门门槛&#xff0c;使初学者能够更快地掌握编程的基本概念。其次&#xff…

OpenCV 4.10 发布

OpenCV 4.10 JPEG 解码速度提升 77%&#xff0c;实验性支持 Wayland、Win ARM64 根据 “OpenCV 中国团队” 介绍&#xff0c;从 4.10 开始 OpenCV 对 JPEG 图像的读取和解码有了 77% 的速度提升&#xff0c;超过了 scikit-image、imageio、pillow。 4.10 版本的一些亮点&…

限流定义、算法、实施方案

限流定义 1、 时间 &#xff0c; 基于某段时间或某个时间点&#xff0c;即&#xff1a;时间窗口 2、资源&#xff1a; 对可用资源进行限制&#xff1a; QPS/连接数/传输速率/黑白名单等 分布式环境下&#xff0c;主流限流方案&#xff1a; 网关层限流&#xff1a;流量入口Ngi…

web 前端开发培训:深入探索与实战应用

web 前端开发培训&#xff1a;深入探索与实战应用 在数字化时代&#xff0c;Web前端开发已成为互联网行业的热门职业之一。然而&#xff0c;要想成为一名优秀的Web前端开发者&#xff0c;不仅需要掌握扎实的技术基础&#xff0c;还需要具备丰富的实战经验和创新思维。本文将从…

点云库tops(point cloud library)

pcl GitHub - PointCloudLibrary/pcl: Point Cloud Library (PCL) GitHub - HuangCongQing/pcl-learning: &#x1f525;PCL&#xff08;Point Cloud Library&#xff09;点云库学习记录 draco GitHub - google/draco: Draco is a library for compressing and decompress…

固定数量点云采样算法

pcl::random_sample 使用案例 算法原理 /** \brief b RandomSample applies a random sampling with uniform probability.* Based off Algorithm A from the paper "Faster Methods for Random Sampling"* by Jeffrey Scott Vitter. The algorithm runs in O(N) an…

深入理解Python:面向对象编程与实践

深入理解Python:面向对象编程与实践 Python是一种功能强大且灵活的编程语言,广泛应用于Web开发、数据分析、人工智能等领域。本文将深入探讨Python中的面向对象编程(OOP)概念,并通过实际代码示例展示其应用。 目录 面向对象编程概述类与对象继承与多态封装与私有化类与对…