首页 > 其他分享 >创建和管理一个 CA 及证书的生命周期

创建和管理一个 CA 及证书的生命周期

时间:2024-05-29 16:43:45浏览次数:21  
标签:生命周期 rootCA 证书 CA openssl key 服务器

任务详情

0 使用openssl或者gmssl,提交markdown格式文档和转化后的pdf
1 创建一个根 CA,包括生成私钥和根证书。分析证书和0015,0034标准的符合情况
2 为一台服务器生成一个私钥和证书签署请求(CSR)。
3 使用根 CA 对服务器的 CSR 进行签名,生成服务器证书。
4 吊销该服务器的证书。
5 提交生成的 CA 证书、服务器证书、CSR、吊销列表(CRL)和其他相关文件。

1. 创建根CA(包括生成私钥和根证书)

生成根CA的私钥

openssl genpkey -algorithm RSA -out rootCA.key -aes256

image

生成根证书 (有效期10年)

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem

image

  • 生成的 rootCA.key 是加密的私钥, rootCA.pem 是根CA的证书。

2. 为服务器生成一个私钥和证书签署请求 (CSR)

生成服务器的私钥

openssl genpkey -algorithm RSA -out server.key

image

生成CSR

openssl req -new -key server.key -out server.csr

image

  • 在创建CSR时,同样你需要提供服务器的相关信息(如组织名、常用名(CN)等)。

3. 使用根CA对服务器的CSR进行签名,生成服务器证书

使用根CA签名CSR并生成服务器证书

openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days365 -sha256

image

  • 根CA使用自己的私钥来签署服务器的CSR。 -CAcreateserial 选项会创建一个序列号文件,如果是第一次签名需要此选项。

4. index.txt 和 serial 文件创建

1. 创建 demoCA 目录和必要的文件

如果index.txt 文件不存在,需要手动创建它。根据配置文件中的路径,执行以下命令:

mkdir -p ./demoCA/newcerts
touch ./demoCA/index.txt
echo ‘1000’ > ./demoCA/serial

创建一个初始化序列文件
image

这里 1000 是下一个签发证书的初始序列号,你可以使用任何正整数值。

2. 创建 crlnumber 文件

根据 openssl.cnf 配置文件中指定的路径,执行以下命令:

echo ‘1000’ > ./demoCA/crlnumber

5. 吊销服务器的证书

创建CA的吊销列表 (CRL)

openssl ca -config /etc/ssl/openssl.cnf -revoke server.crt -keyfile rootCA.key -cert rootCA.pem
openssl ca -gencrl -config /etc/ssl/openssl.cnf -keyfile rootCA.key -cert rootCA.pem -out crl.pem

image

  • 在执行上面的命令之前,需要根据实际环境修改 openssl.cnf 配置文件,并确保 index.txt 和 serial文件存在并且可写。

image

标签:生命周期,rootCA,证书,CA,openssl,key,服务器
From: https://www.cnblogs.com/hosf/p/18220612

相关文章

  • Tomcat源码解析(七):底层如何获取请求url、请求头、json数据?
    Tomcat源码系列文章Tomcat源码解析(一):Tomcat整体架构Tomcat源码解析(二):Bootstrap和CatalinaTomcat源码解析(三):LifeCycle生命周期管理Tomcat源码解析(四):StandardServer和StandardServiceTomcat源码解析(五):StandardEngine、StandardHost、StandardContext、Standard......
  • Scala 中的抽象类
    Scala中的抽象类小白的Scala学习笔记Scala中的抽象类是一种不能被实例化的类,它主要被用来定义一些通用的行为和属性,并且可以包含抽象方法(没有具体实现的方法)和非抽象方法(有具体实现的方法)。与普通类相比,抽象类有以下几个特点:1.不能直接实例化:抽象类不能被直接实......
  • find_sys_call_table和kallsysms_lookup_name的区别
    find_sys_call_table和kallsyms_lookup_name都可以用于查找内核符号,但它们的具体作用和使用场景有所不同。以下是两者的详细对比:1.find_sys_call_table作用find_sys_call_table是一种通过遍历内核内存或者其他方式来手动查找系统调用表地址的技术。这种方法通常在某些情况......
  • C++中以类的成员函数作为Windows callback函数需要设置成static函数
    在看代码时,发现很多CALLBACK函数,所以仔细研究了一下C++中的CALLBACK函数首先,我们来理解一下,什么是C++中的CALLBACK函数 =>凡是由你设计,但是由Windows操作系统调用的函数,我们把它统称为CALLBACK函数,这些函数都有一定的类型,以方便配合Windows的调用动作某些WindowsAPI函数会要......
  • 【SCAU操作系统】实验三单处理器系统的进程调度python源代码及实验报告参考
    一、课程设计目的        1.加深对进程概念的理解,明确进程和程序的区别。        2.深入了解系统如何组织进程、创建进程。        3.进一步认识如何实现处理器调度。二、课程设计内容        编写程序完成单处理器系......
  • Excalidraw画板调研-二次开发
    最近刚入职一家公司,主管让我研究一下Excalidraw。有一个需求需要用到画板,Excalidraw是开源的,某些功能如果通过传参无法做到,就需要二次开发。目前遇到几个困难:1.如果通过传参来实现,Excalidraw是基于react的,而我们的项目是VUE框架,就无法直接使用基于react的Excalidraw。虽然后面......
  • Cannot find module ‘./bpm/analysis‘
    错误信息“Cannotfindmodule‘./bpm/analysis’”通常表明Node.js无法在指定路径中找到模块。以下是一些排查和解决此问题的步骤:检查路径:确认路径./bpm/analysis是否正确,并指向模块所在的正确目录。路径是区分大小写的,因此请确保大小写与实际目录和文件名匹配。......
  • 干货收藏!Calico的BGP RouteReflector策略实践
    本文分享自华为云社区《CalicoBGPRouteReflector策略实践》,作者:可以交个朋友。一背景容器网络组件Calico支持多种后端模式,有Overlay的IPIP、Vxlan模式,也有Underlay纯路由的BGP模式。相比于Overlay网络模型,Underlay网络具有更高的数据面转发性能。同时在纯路由模式下,也有两种......
  • geotrust通配符证书600元且赠送一个月
    GeoTrust作为国际知名的数字证书颁发机构,旗下有RapidSSL、QuickSSL等子品牌经营着各种类型的SSL数字证书,其中RapidSSL旗下的SSL数字证书都是入门级的,性价比高。审核速度也比较快,证书的适用范围也比较广泛。今天就随SSL盾小编了解GeotrustRapidSSL旗下的通配符SSL证书。1.Geot......
  • mysql GROUP_CONCAT()函数
    一、GROUP_CONCAT函数语法函数语法:group_concat([DISTINCT]需要连接的字段[OrderBY排序字段ASC/DESC][Separator'分隔符'])GROUP_CONCAT()函数分隔符GROUP_CONCAT()函数默认是逗号分隔修改GROUP_CONCAT(exprSEPARATOR'分隔符')GROUP_CONCAT()函数去重G......