openssl 生成证书步骤

news2025/1/11 10:55:25

        本地测试RSA非对称加密功能时,需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤,并没有深入研究openssl,难免会有错误,欢迎指出!!!

生成证书标准流程:

1、生成私钥(.key)

2、用私钥生成证书请求(.csr)

3、将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓的“签名”操作,完成签名后就会得到真正的签发证书(.cer或.crt)

一、openssl生成证书

1、生成一个 2048 位的 RSA 私钥

openssl genrsa -out private.key 2048

2、使用私钥来生成新的证书签名请求(.csr)

openssl req -new -key private.key -out private.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"
  • -new 表示创建一个新的证书请求;
  • -key 后面跟着的是私钥文件;
  • -out 后面是输出的CSR文件;
  • -subj 是请求中的主题信息。你将被要求提供一些信息,如你的国家、省份、城市、组织名称等。这些信息将包含在你的证书中。
    • /C= 是证书的国家代码。
    • /ST= 是州或省份名称。
    • /L= 是城市名称。
    • /O= 是组织名称。
    • /OU= 是组织单位名称。
    • /CN= 是通用名称,通常是域名。
    • /emailAddress= 是电子邮件地址。

3、有了私钥和证书签名请求后,我们可以选择做3件事:

3.1 标准CA签发流程

  • 证书请求(.csr)提交给CA认证机构申请证书(.crt);
  • CA机构会用他的根证书对应的私钥来签名(由CA机构操作);

3.2 生成自签名证书

        可以看到标准CA签发流程是用CA机构的私钥去签名。而自签名证书是用自己的私钥签署自己的证书请求,生成自签名SSL证书。

注意:自签名证书不会被浏览器信任,只能用于内部或测试用途。如果你需要一个可被浏览器信任的证书,你需要从受信任的证书颁发机构(CA)获取签名证书。

openssl x509 -req -in private.csr -out private.crt -signkey private.key -days 365
  • openssl x509 -req 表示签名请求,生成证书。
  • -in private.csr 表示输入的CSR文件名。
  • -out private.crt 表示输出的CRT文件名。
  • -signkey private.key 表示用于签名的私钥文件名。
  • -days 表示证书的有效期。

        生成的证书格式默认是 PEM,即 Privacy Enhanced Mail,它是 Base64 编码的 ASCII 码文件,常用于存储证书和密钥。PEM 格式的证书通常以 -BEGIN CERTIFICATE- 开始,以 -END CERTIFICATE- 结束,如图:

3.3 私有CA签发证书

        如果我们把3.2生成自签名证书(ca.crt)私钥(ca.key)当作私有的CA机构,然后签署其他的证书签名请求,生成私有CA签名的证书,这个过程,可以理解为是私有CA签发证书。

CA签名证书命令:

  • ca.key就是3.2的private.key;
  • ca.crt就是3.2的private.crt;
  • server.csr就是我们需要签名的证书请求
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365
  • -req 表示要处理的输入文件是一个证书签名请求(CSR)。
  • -in server.csr 表示要处理的CSR文件名为server.csr。
  • -CA ca.crt 表示CA的证书文件名为ca.crt。
  • -CAkey ca.key 表示CA的私钥文件名为ca.key。
  • -CAcreateserial 表示如果CA的证书和私钥不存在,则创建它们。
  • -out server.crt 表示生成的服务器证书输出文件名为server.crt。

二、命令简化

生成 私钥(.key) 和 证书签名请求(.csr) 可以用一条命令实现:

openssl req -new -newkey rsa:2048 -nodes -keyout my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

生成 私钥(.key) 和 证书签名请求(.csr) 再生成 签名证书(.crt)可以用一条命令实现:

openssl req -x509 -newkey rsa:2048 -nodes -keyout my.key -out my.crt -days 3650  -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

三、其他命令

使用私钥生成对应的公钥:

openssl rsa -in private.key -pubout -out public.pub

从证书中提取公钥:

openssl x509 -in private.crt -pubkey -outform PEM -out public_key.pem

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

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

相关文章

关于ssrf

首先,先介绍一下ssrf。ssrf即服务器端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。而且因为请求是由服务端发起的,所以服务端能请求到与自身相连而与…

计算机网络——应用层协议(2:http协议)

在这篇文章中自定义应用层协议,我曾介绍了应用层协议中需要我们开发人员自行制定应用层协议,而应用层协议又离不开结构化字段以及序列化和反序列化还有报头的封装。而在今天,我们有一种应用层协议是我们几乎人人都接触过的协议,它…

暗区突围国际服pc端海外版新手前期如何赚钱 暗区突围新手教学

暗区突围国际服pc端海外版新手前期如何赚钱 暗区突围新手教学 暗区突围是一款极为惊险的射击游戏,让玩家充分感受紧张激烈的战斗以及获取财富的过程。但是有许多新手玩家是不会在游戏里赚钱的,也会在赚钱过程中遇到很多问题,我将在这篇文章…

PGP加密技术:保护信息安全的利器

随着数字化时代的到来,个人和企业对信息安全的需求日益增长。PGP(Pretty Good Privacy)加密技术作为一项强大的加密工具,为保护敏感数据提供了一种有效的方法。本文将探讨PGP加密技术的基本原理、应用场景以及其在现代信息安全中的…

IDEA - java.lang.OutOfMemoryError: Java heap space / insufficient memory

IDEA 第一次运行项目时,会报如题错误,解决办法是: 将图示部分由默认的 700 改为 2048。

PPT弹簧画法

1. 插入两个圆 2. 使用Lvyhtools的形状-位置分布-圆形阵列 注意:阵列中心要点击文字后才能选择 3. 删除中心的圆,使用Onekey10的原位复制,可以多次; 4. 右击图像选择设置形状格式-线条(无线条) 5. 找到第二…

云HIS源码,基于云计算的医院临床信息系统(有应用案列)

云HIS全套商业源码,基于云计算的医院临床信息系统 提供预约挂号、门急诊收费、门诊医生站、护士工作站、药房药库管理、电子病历、住院医生站、住院护士工作站、住院登记结算、出院管理、病案管理、医药价格管理、财务管理、统计查询、会员管理等业务及管理功能。 …

PCIe下一代线缆标准CopprLink发布

作为业界广泛采用的高速串行点对点互联标准,PCIe自诞生以来历经多次迭代升级,现已成为CPU、GPU、FPGA、SSD等计算设备间不可或缺的互连桥梁。PCIe 7.0标准更是将数据传输速率提升至令人惊叹的32 GB/s(每通道)。 然而,面…

linux上go项目打包与部署

1.第一步把项目打包 1.确保本地goland的操作系统为linux go env找到GOOS如果为window就修改为Linux 修改命令为 go env -w GOOSlinux2.打包 在项目根目录下输入 go build main.go然后项目根目录下会出现一个mian的二进制文件 3.上传包 将 main 程序包放到服务的目录下&…

俄罗斯国际消费类电子电器展ICEE:人潮如织,盛况空前

近日,备受全球瞩目的俄罗斯国际消费类电子电器展ICEE在莫斯科盛大落幕。本次展会为期四天,真的攒足了眼球,不仅俄罗斯这边的很多媒体和自媒体有报道,展会第一天,很多参展商通过短视频平台将展会的盛况传到了国内&#…

深入理解Python的类,实例和type函数

问题起源: class t():pass s1 t() s2 type("Student2",(),{}) isinstance(s1, type), isinstance(s2, type)为什么第一个是false,第二个是true呢 根因定位: 在Python中,一切皆对象,类是对象&#xff0c…

补一 继承的使用

继承的关键词为extends 模型为 public class 子类 extends 父类

C#winfrom三层架构实现简单课程管理系统管理系统,三层架构实现增删改查

1. 项目展示 1.1登录展示 1.2添加课程信息展示 1.3课程信息管理-查询-修改-删除 1.4修改登录密码 2.项目功能介绍(图) 3.数据库设计 3.1 教师表设计 3.2 课程分类表 3.3 课程信息表 4. 创建样式界面 winfrom 超详细UI创建过程 实现双色球选号器UI界面…

ssrf初步

一,简介 全称:Server-Side Request Forgery(中文:服务器端请求伪造) 攻击者从服务端发起请求,让服务器连接任意外部系统,从而泄露敏感数据。主要利用各种协议的请求伪造,例如php协…

Oracle SQL Developer导出数据库表结构,表数据,索引以及序列号等对象

目录 一、业务需求 三、环境说明 三、数据导出 四、数据导入 一、业务需求 通过Oracle SQL Developer软件将指定oralce数据库中的表结构,表数据,索引以及序列号等对象导出成SQL文件。 三、环境说明 数据库版本:Oracle Database 11g Expres…

【C++】STL_ string的使用 + 模拟实现

前言 目录 1. STL简介(1)什么是STL(2)STL的版本(3)STL的六大组件 2. string的使用2.1 npos2.2 遍历字符串string的每一个字符2.3 迭代器:2.4 string的内存管理2.5 string模拟实现2.5.1 深拷贝&a…

MySQL学习笔记10——日志

日志 一、日志1、通用查询日志(1)开启通用查询日志(2)查看通用查询日志(3)删除通用查询日志 2、慢查询日志3、错误日志4、二进制日志(1)查看二进制日志(2)刷新…

创新指南|创新组合管理的7个陷阱以及如何避免它们

进入未知领域的第一步可能具有挑战性。尽管创新会犯错误,但在将 IPM 作为公司实践实施时,您可以准备好并避免一些常见的陷阱。在这篇文章中,我们将讨论组织在实施创新组合管理时遇到的最常见的陷阱。 01. 在映射中包含日常业务任务 映射中的…

工会排队返现:创新促销模式,实现消费者与商家双赢

在数字化营销日益盛行的今天,各种促销策略层出不穷,但真正能够打动消费者内心并促成双赢局面的策略却并不多见。工会排队返现模式便是其中一例,它巧妙地融合了积分奖励、奖金池累积以及排队等待机制,为消费者和商家带来了全新的互…

C++入门--引用

点赞关注不迷路!本节涉及C入门--引用 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 ✨ 加关注👀 期待与你共同进步! 1.1 引用的概念 啥叫引用?其实很好理解,比如你隔壁邻居的孩子上学时大…