当前位置: 首页 > news >正文

openssl 生成自签名证书

1、openssl生成CA根证书

        1.1、生成CA私钥

         openssl genrsa -out root_ca.key 2048

         注意:私钥必须妥善保管,既不能丢失,也不能泄露。如果发生丢失和泄露,必须马上重新

        生成,以使旧的证书失效。

        1.2、通过ca私钥生成pem格式的ca根证书

         openssl req -x509 -new -nodes -key root_ca.key -sha256 -days 36500 -out root_ca.pem

         接下来需要填写:

         Country Name (2 letter code) [XX]:CN

         State or Province Name (full name) []:ShannXi

         Locality Name (eg, city) [Default City]:XiAn

         Organization Name (eg, company) [Default Company Ltd]:xxx

         Organizational Unit Name (eg, section) []:Test

         Common Name (eg, your name or your server's hostname) []:xxx

         Email Address []:

        注意:-days 36500’代表生成的根证书的有效期为36500天,下面的参数根据实际填写即可。

2、用根证书签发server证书

        2.1、生成服务端私钥:

         openssl genrsa -out http_server.key 2048

        2.2、新建server_req.conf文件:

[req]

default_bits  = 2048

distinguished_name = req_distinguished_name

req_extensions = req_ext

x509_extensions = v3_req

prompt = no

[req_distinguished_name]

countryName = CN

stateOrProvinceName = ShannXi

localityName = XiAn

organizationName = xxx

commonName = *.xxx.com  #修改 设备连接用的域名或ip

[req_ext]

subjectAltName = @alt_names

[v3_req]

subjectAltName = @alt_names

[alt_names]

IP.1 = 0.0.0.0

IP.2 = 127.0.0.1

IP.3 = xxxxx

IP.4 = xxxxx

DNS.1 = *.xxx.com

DNS.2 = localhost

         注意:

         1alt_names里的IP列填设备要访问的服务端的IP地址。

         2alt_names里的DNS列填设备要访问的服务端的域名地址。

         3commonName 填设备要访问的服务端的IP或域名地址。

         4、当客户端访问服务端的地址为IP地址,那么只会在x509的扩展项subjectAltName中寻找IP进行 匹配,也就是到alt_names里面的IP列去寻找IP进行匹配。

         5、当客户端访问服务端的地址为域名地址,则除了在 subjectAltName 中寻找域名进行匹配(也就是到alt_names里面的DNS列去匹配)外,还会检查req_distinguished_name中的 commonName 是否和域名匹配。 

        2.3、生成证书签名请求:

         openssl req -new -key ./http_server.key -config server_req.conf -out http_server.csr

        2.4、生成最终服务端证书

              用请求文件、根证书、私钥、server_req.conf,签发新的服务端证书:http_server.pem,

        设置有效期为36500天。

openssl x509 -req -in ./http_server.csr -CA root_ca.pem -CAkey root_ca.key -CAcreateserial -out   http_server.pem -days 36500 -sha256 -extensions v3_req -extfile server_req.conf

3、用根证给签发client证书

        3.1生成客户端私钥

         openssl genrsa -out xxxxx.key 2048

         注意:文件名为:xxxxx。

        3.2、生成客户端证书签名请

openssl req -new -key xxxxx.key -out xxxxx.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=Shanghai/CN=xxxxx"

         注意:文件名、参数CN值,应该保持一致,都为xxxxx。

        3.3、签发客户端证书

         用证书请求文件、根证书、私钥,签发客户端证书:xxxxx.pem,设置有效期为36500天。文件名为:xxxxx。

openssl x509 -req -days 36500 -in xxxxx.csr -CA root_ca.pem -CAkey root_ca.key -CAcreateserial -out xxxxx.pem

4、当更换服务端的IP或者域名时

        当迁移服务器,导致服务端IP变更,或者客户端访问服务端的域名发生变更时,我们该如何更换自签名证书?

        4.1、当服务端的IP发生变更时:

         只需要将新的IP地址更新到server_req.conf 文件里alt_names 的IP列里面,然后用server_req.conf文件重新生成服务端证书签名请求,再重新生成服务端证书,用新证书替换原有的服务端旧证书,再重启ac-gateway-http服务,设备端不用变更证书,就可以直接访问新服务器了。

        4.2、当服务端的域名发生变更时:

         当服务端是以域名地址提供对外服务时,当域名地址变更时,我们除了要将新的域名地址更新到server_req.conf 文件里alt_names 的DNS列里面,还要将req_distinguished_name中的 commonName值更新成新的域名地址,然后用server_req.conf文件重新生成服务端证书签名请求,再重新生成服务端证书,用新证书替换原有的服务端旧证书,然后重启ac-gateway-http服务,设备端不用变更证书,就可以直接访问新服务器了。

相关文章:

openssl 生成自签名证书

1、openssl生成CA根证书 1.1、生成CA私钥 openssl genrsa -out root_ca.key 2048 注意:私钥必须妥善保管,既不能丢失,也不能泄露。如果发生丢失和泄露,必须马上重新 生成,以使旧的证书失效。 1.2、通过ca私钥生成pem格…...

微服务dubbo和nexus

微服务是一种软件开发架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都可以独立部署、管理和扩展。每个服务都可以通过轻量级的通信机制(通常是 HTTP/REST 或消息队列)相互通信。微服务架构追求高内聚、低耦合&am…...

uView1.0的Upload组件上传图片

<template><u-uploadref"uUpload":file-list"fileList"accept"image/jpeg,image/png" //允许选择图片文件:sizeType"sizeType":max-size"2 * 1024 * 1024" //限制上传的图片文件最大为 2Moversize"over…...

【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)

本文章代码以c为例&#xff01; 一、力扣第343题&#xff1a;整数拆分 题目&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输…...

半导体制造常用软件工具总结

半导体制造常用软件工具总结 CIM&#xff1a;Computer Integrated Manufacturing 设备自动化&#xff0c;总称MES&#xff1a;Manufacturing Execution System 制造执行系统EAP&#xff1a;Equipment Automation Programming 设备自动化&#xff0c;是MES与设备的桥梁APC&…...

基于Python的IOS自动化测试环境搭建

文章目录 一、测试架构介绍1.1 WebDriverAgent原理分析1.2 tidevice原理分析二、环境安装2.1 iOS 设备安装 WebDriverAgent2.2 安装iTunes2.3 安装tidevice2.4 安装facebook-wda自动化三、操作流程四、Weditor的安装和使用一、测试架构介绍 以下为测试架构原理图 手机端的WDA…...

技术领导力实战笔记25

25&#xff5c;用心做好“鼓励式”管理 激发正能量 授权 分工作&#xff1a; 老人干新事&#xff0c;新人干老事&#xff0c;强者干难事&#xff0c;弱者干细事 新人干老事 所谓新人&#xff0c;是对业务产品不了解&#xff0c;对工作流程不清晰的岗位新人。对于新人来说&…...

设计模式-职责链+反射

文章目录 前言简单版本的职责链加反射职责链反射思路过程总结 前言 最近学习设计模式对于职责链的学习有了一些深入的了解故此有了这篇博客 简单版本的职责链加反射 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;和反射&#xff08;Reflection&#x…...

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…...

python3.11教程1:python基础语法、程序控制、函数

文章目录 一、Python简介1.1 为什么学习python1.2 python安装与配置1.3 python解释器1.4 命令行参数1.4.1 sys.argv变量1.4.2 -c和-m选项 1.5 解释器的运行环境1.5.1 编码格式1.5.2 编码声明 二、Python基础语法2.1 行结构2.2 变量&#xff08;标识符&#xff09;2.3 字节串2.4…...

【C++】关于using namepace xxx 使用命名空间和冲突

官方定义 namespace是指 标识符的各种可见范围。命名空间用关键字namespace来定义。 命名空间是C的一种机制&#xff0c;用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标识符作为此组群的名字。 基本使用 编译及执行命令&#xff1a; g test.cpp -o test ./…...

Linux常用命令——cupsenable命令

在线Linux命令查询工具 cupsenable 启动指定的打印机 补充说明 cupsenable命令用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E&#xff1a;当连接到服务器时强制使用加密&#xff1b; -U&#xff1a;指定连接服务器时使用的用户名&#xff1b; -u&#xff…...

基于Stable Diffusion的AIGC服饰穿搭实践

本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程&#xff0c;并陈述了部分目前的实践结果。通过阅读这篇文章&#xff0c;读者可以了解到如何运用Stable Diffusion进行实际操作&…...

【 ARMv9 Cluster BUS QoS 配置】

文章目录 ARM Cluster QoS ARM Cluster QoS QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;在 ARM 架构中&#xff0c;主要指的是一种机制&#xff0c;它可以控制和管理系统资源&#xff08;如内存、总线带宽等&#xff09;的使用&#xff0c;以满足各种…...

简单了解网络基本概念

目录 一、网络含义 二、什么是以太网&#xff1f; 三、网络分类 四、网络架构 五、数据传输方式 六、双工模式 一、网络含义 在实际生活中我们用传输介质把独立的终端设备相互连接起来就构成了网络。 二、什么是以太网&#xff1f; 以太网是一种网络通信协议标准&#…...

网络安全知识库

0x00 前言 本篇用来整理所有的零散的知识&#xff0c;作为一个技能树或者技能表来进行引导 CTF 加解密合集CTF Web合集 0x01 Http 1.http头 1.1 本地访问识别 如何伪造http头&#xff0c;让后端认为是本地访问...

无涯教程-JavaScript - FLOOR函数

描述 FLOOR函数将数字向下舍入为零,直到最接近的有效倍数。 语法 FLOOR (number, significance)争论 Argument描述Required/OptionalNumberThe numeric value you want to round.RequiredSignificanceThe multiple to which you want to round.Required Notes 如果数字的符…...

【LeetCode-中等题】146. LRU 缓存

文章目录 题目方法一&#xff1a;直接继承LinkedHashMap调用api方法二&#xff1a;自定义LinkedHashMap HashMap ListNode LinkedHashMap 题目 LRU缓存是什么&#xff1a;LRU缓存机制&#xff0c;你想知道的这里都有 实现 LRU 缓存算法 方法一&#xff1a;直接继承Linked…...

表白墙程序

目录 一、页面代码部分 二、设计程序 二、实现 doPost​编辑 三、实现 doGet 四、前端代码部分 五、使用数据库存储数据 一、页面代码部分 在之前的一篇博客中&#xff0c;已经写过了表白墙的页面代码实现&#xff0c;这里就不再重复了 页面代码如下&#xff1a; <!…...

git 本地仓库关联到远程仓库

将本地仓库关联到远程仓库 方式一&#xff1a;远程仓库没有文件 第一步&#xff1a; git init&#xff08;初始化git仓库&#xff09; 第二步&#xff1a; git remote add 地址&#xff08;设置remote地址&#xff09; 第三步&#xff1a; git add . &#xff08;将所有变…...

LeetCode 1089 复写零:用双指针从后往前填,保姆级图解避坑指南

LeetCode 1089 复写零&#xff1a;双指针逆向填充的视觉化拆解与实战避坑 当你第一次看到LeetCode 1089题时&#xff0c;可能会觉得"复写零"这个操作听起来简单——不就是遇到0就多写一个吗&#xff1f;但真正动手实现时&#xff0c;很多人会在指针移动、边界处理和数…...

HRNet代码逐行解析:从BasicBlock到HighResolutionNet,手把手教你读懂多分辨率融合

HRNet代码深度解析&#xff1a;从基础模块到多分辨率融合实战 在计算机视觉领域&#xff0c;HRNet&#xff08;High-Resolution Network&#xff09;因其独特的并行多分辨率架构而备受关注。与传统的串行降采样网络不同&#xff0c;HRNet在整个前向传播过程中始终保持高分辨率表…...

Go语言实战:用EMQX搭建MQTT物联网系统(含Docker部署指南)

Go语言与EMQX实战&#xff1a;构建高可靠物联网通信系统 1. 物联网通信基础与MQTT协议解析 在万物互联的时代&#xff0c;设备间的实时通信成为物联网系统的核心需求。MQTT协议凭借其轻量级、低功耗和高效发布/订阅机制&#xff0c;已成为物联网领域的事实标准。让我们深入探讨…...

MAD与标准差:鲁棒统计中的抗噪利器

1. 为什么我们需要抗噪统计量&#xff1f; 在日常数据分析中&#xff0c;我们经常会遇到一些"不听话"的数据点。比如分析员工薪资时突然冒出几个高管的天价年薪&#xff0c;或者测量温度时混入几个明显错误的极端值。这时候如果直接用传统的标准差来计算离散程度&…...

OpenClaw+GLM-4.7-Flash数据助手:Excel报表自动生成与分析

OpenClawGLM-4.7-Flash数据助手&#xff1a;Excel报表自动生成与分析 1. 为什么需要自动化数据助手 作为一位经常与Excel报表打交道的分析师&#xff0c;我每天要花大量时间重复执行数据清洗、格式转换和基础分析。最痛苦的是每月底需要手动合并十几个分公司的销售数据&#…...

BMAD 开发者的日常如果你正在用

BMAD 开发者的日常如果你正在用 BMAD 方法论做开发&#xff0c;这套流程一定很熟悉&#xff1a;/bmad-bmm-create-story 1.1 # 创建故事 /bmad-bmm-dev-story 1.1 # 开发实现 /bmad-bmm-qa-automate 1.1 # 运行测试 /bmad-bmm-code-review 1.1 # 代码审查 # 发现 …...

哔哩哔哩API神器bilibili-api:Python开发者的终极爬虫工具指南

哔哩哔哩API神器bilibili-api&#xff1a;Python开发者的终极爬虫工具指南 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址&#xff1a;https://github.com/MoyuScript/bilibili-api 项目地址: https://gitcode.com…...

HunyuanVideo-Foley部署教程:API限流配置与高并发请求稳定性保障

HunyuanVideo-Foley部署教程&#xff1a;API限流配置与高并发请求稳定性保障 1. 环境准备与快速部署 HunyuanVideo-Foley是一款强大的视频生成与音效生成工具&#xff0c;本教程将指导您完成私有化部署&#xff0c;并重点讲解API限流配置与高并发请求的稳定性保障方案。 1.1…...

技术小白AI入门避坑指南:避开4大雷区,高效进阶不走弯路

技术小白AI入门避坑指南&#xff1a;避开4大雷区&#xff0c;高效进阶不走弯路 前言&#xff1a;作为技术小白&#xff0c;入门AI的路上&#xff0c;最可怕的不是“基础薄弱”&#xff0c;而是“走偏方向”——明明付出了时间和精力&#xff0c;却因为踩中误区&#xff0c;要么…...

指针的使用

指针基本用法C语言中使用指针可以1.程序简洁&#xff0c;紧凑&#xff0c;高效2.有效的表达复杂的数据结构3.动态分配内存4.得到多余一个的函数返回值5.编译或函数调用时为其分配内存单元6.变量是对程序中数据存储空间的抽象指针的感念在C语言中&#xff0c;内存单元的地址&…...