CA(openssl)

目录

创建私有CA

1、创建CA所需要的文件

2、生成CA私钥

3、生成CA自签名证书

申请证书并颁发证书

1、为需要使用证书的主机生成私钥

2、为需要使用证书的主机生成证书申请文件

3、在CA签署证书并将证书颁发给请求者

改变检查策略

4、查看证书中的信息

5、index.txt和serial文件的介绍

6、同一个csr(证书签名请求)如何生成多个证书

吊销证书

在客户端获取要吊销的证书的serial

在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书

指定第一个吊销证书的编号

更新证书吊销列表

生成证书吊销列表文件

生成证书链

生成根证书

生成中间证书

生成服务器证书

生成证书链

格式文件


创建私有CA

1、创建CA所需要的文件

#生成证书索引数据库文件

touch /etc/pki/CA/index.txt

#指定第一个颁发证书的序列号

echo 01 > /etc/pki/CA/serial

2、生成CA私钥

cd /etc/pki/CA/

(umask 066; openssl genrsa -out private/cakey.pem 2048)

3、生成CA自签名证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem

选项说明:

-new:            生成新证书签署请求

-x509:           专用于CA生成自签证书

-key:             生成请求时用到的私钥文件

-days n:  证书的有效期限

-out /PATH/TO/SOMECERTFILE:       证书的保存路径

国家代码:https://country-code.cl/

范例:生成自签名证书

[root@CentOS7 ~]# openssl req -utf8 -newkey rsa:1024 -subj "/CN=www.xiaobai.org" -keyout app.key -nodes -x509 -out app.crt

Generating a 1024 bit RSA private key

.......................++++++

.......................++++++

writing new private key to 'app.key'

#查看证书

[root@CentOS7 ~]# openssl x509 -in app.crt -noout -text

Certificate:

    Data:

        Version: 3 (0x2)

        Serial Number:

            f5:42:e7:5a:cd:65:17:46

    Signature Algorithm: sha256WithRSAEncryption

        Issuer: CN=www.xiaobai.org

        Validity

            Not Before: Jun 19 06:48:56 2023 GMT

            Not After : Jul 19 06:48:56 2023 GMT

        Subject: CN=www.xiaobai.org

        Subject Public Key Info:

            Public Key Algorithm: rsaEncryption

                Public-Key: (1024 bit)

                Modulus:

·····

                Exponent: 65537 (0x10001)

        X509v3 extensions:

            X509v3 Subject Key Identifier:

                36:BD:AE:68:3D:D8:48:09:7B:8D:B7:50:51:F8:0A:4A:92:F5:91:18

            X509v3 Authority Key Identifier:

                keyid:36:BD:AE:68:3D:D8:48:09:7B:8D:B7:50:51:F8:0A:4A:92:F5:91:18

            X509v3 Basic Constraints:

                CA:TRUE

    Signature Algorithm: sha256WithRSAEncryption

·····

[root@CentOS7 ~]#

申请证书并颁发证书

1、为需要使用证书的主机生成私钥

(umask 066;openssl genrsa -out data/test.key 2048)

2、为需要使用证书的主机生成证书申请文件

openssl req -new -key data/test.key -out data/test.csr

3、在CA签署证书并将证书颁发给请求者

openssl ca -in data/test.csr -out /etc/pki/CA/certs/test.crt -days 100

注意:默认要求国家,省,公司名称三项必须和CA一致,否则会报错

在 OpenSSL 中,要求证书申请中的组织信息(Organization)必须与 CA(证书颁发机构)的证书中的组织信息一致。这通常包括国家(Country),省(State),以及公司名称(Organization Name)等。

在证书申请过程中,OpenSSL 会自动从系统中获取当前系统的时区信息,并且要求申请者必须提供证书的有效期,以及证书的序列号等信息。此外,OpenSSL 也要求申请者必须提供证书的通用名称(Common Name),该名称通常用于表示证书的主机名或域名。

需要注意的是,OpenSSL 并不会检查申请者是否是合法的组织或公司,只会检查申请者提供的组织信息是否与 CA 的证书中的组织信息一致。因此,在使用 OpenSSL 申请证书时,需要谨慎核实申请者提供的组织信息是否正确,以确保证书的安全性。

[root@CentOS7 ~]# openssl ca -in data/test.csr -out /etc/pki/CA/certs/test.crt -days 100

Using configuration from /etc/pki/tls/openssl.cnf           //使用/etc/pki/tls/openssl.cnf中的配置

Check that the request matches the signature               //检查请求是否与签名匹配

Signature ok                                                                 //签名成功

The stateOrProvinceName field needed to be the same in the

CA certificate (beijing) and the request (jiangshu)          //CA证书(北京)和请求(江苏)中的stateOrProvinceName字段需要相同

改变检查策略

[root@CentOS7 ~]# vim /etc/pki/tls/openssl.cnf

# A few difference way of specifying how similar the request should look

# For type CA, the listed attributes must be the same, and the optional

# and supplied fields are just that :-)

//在指定请求查找类型CA的相似程度时,有一些不同的方法,列出的属性必须相同,可选字段和提供的字段只有这些:-)

policy          = policy_match

# For the CA policy

[ policy_match ]

countryName             = match

stateOrProvinceName     = match

organizationName        = match

organizationalUnitName  = optional

commonName              = supplied

emailAddress            = optional

# For the 'anything' policy

# At this point in time, you must list all acceptable 'object'

# types.

//此时,你必须列出所有可接受的` object `类型。

[ policy_anything ]

countryName             = optional

stateOrProvinceName     = optional

localityName            = optional

organizationName        = optional

organizationalUnitName  = optional

commonName              = supplied

emailAddress            = optional

Certificate is to be certified until Sep 27 06:56:04 2023 GMT (100 days)

Sign the certificate? [y/n]:y

//认证截止日期为格林尼治时间2023年9月27日06:56:04日(100天)

签署证书?[y / n]: y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

1 / 1的证书要求认证,提交?[y / n] y

写入数据库并添加1个新条目

数据库更新

4、查看证书中的信息

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates

#查看指定编号的证书状态

openssl ca -status SERIAL

5、index.txt和serial文件的介绍

OpenSSL是一个开源的加密库,它提供了一系列的加密算法和协议,包括SSL、TLS、RSA、DSA、AES、SHA等。在使用OpenSSL进行证书签名时,需要使用index.txt和serial文件。

index.txt文件是一个文本文件,用于存储证书请求和证书的信息。每个证书请求或证书都有一个唯一的序列号,该序列号由serial文件中的数字自动递增生成。index.txt文件的格式如下:

```

V 200101010000Z 01 unknown /CN=example.com

V 200101010000Z 02 unknown /CN=example.org

```

其中,每一行代表一个证书请求或证书,各字段的含义如下:

- 第一列:证书状态,V表示有效,R表示已撤销。

- 第二列:证书的有效期起始时间,格式为YYYYMMDDHHMMSSZ。

- 第三列:证书的序列号,由serial文件中的数字自动递增生成。

- 第四列:证书的撤销状态,unknown表示未撤销。

- 第五列:证书的主题信息,格式为/CN=example.com。

serial文件是一个文本文件,用于存储证书的序列号。每次签名时,序列号会自动递增。serial文件的格式如下:

```

01

02

```

其中,每一行代表一个证书的序列号。

在使用OpenSSL进行证书签名时,需要先创建index.txt和serial文件,并将证书请求添加到index.txt文件中。然后,使用openssl ca命令对证书进行签名,签名后的证书将会被添加到index.txt文件中。每次签名后,serial文件中的序列号会自动递增,以便下一次签名使用。

6、同一个csr(证书签名请求)如何生成多个证书

使用同一个csr生成证书,会有错误

failed to update database

TXT_DB error number 2

更改以下配置

[root@CentOS7 ~]# vim /etc/pki/CA/index.txt.attr

将unique_subject = yes

改为unique_subject = no

吊销证书

在客户端获取要吊销的证书的serial

openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

[root@CentOS7 ~]# openssl x509 -in test_2.crt -noout -serial -subject

serial=03

subject= /C=CN/ST=beijing/O=it/OU=it01/CN=it

在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

[root@CentOS7 ~]# openssl ca -revoke test_2.crt

Using configuration from /etc/pki/tls/openssl.cnf

Revoking Certificate 03.

Data Base Updated

[root@CentOS7 CA]# vim index.txt

V       230928024718Z           01      unknown /C=CN/ST=beijing/O=it/OU=it01/CN=it

V       230928025156Z           02      unknown /C=CN/ST=beijing/O=it/OU=it01/CN=it

R       230928035209Z   230620035512Z   03      unknown /C=CN/ST=beijing/O=it/OU=it01/CN=it

[root@CentOS7 ~]# openssl ca -status 03

Using configuration from /etc/pki/tls/openssl.cnf

03=Revoked (R)

指定第一个吊销证书的编号

echo 01 > /etc/pki/CA/crlnumber

注意:第一次更新证书吊销列表前,才需要执行

更新证书吊销列表

openssl ca -gencrl -out /etc/pki/CA/crl.pem

生成证书吊销列表文件

[root@CentOS7 ~]# openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem

Using configuration from /etc/pki/tls/openssl.cnf           // 使用/etc/pki/tls/openssl.cnf中的配置

/etc/pki/CA/crlnumber: No such file or directory            // /etc/pki/CA/crlnumber:没有该文件或目录

error while loading CRL number                                    // 加载CRL编号时出错

140067035502480:error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/etc/pki/CA/crlnumber','r')

140067035502480:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:

//140067035502480:错误:02001002:系统库:fopen:没有这样的文件或目录:bss_file.c:402:fopen('/etc/pki/CA/crlnumber','r')

140067035502480:错误:20074002:BIO例程:FILE_CTRL:system lib:bss_file.c:404:

[root@CentOS7 ~]# echo 01 > /etc/pki/CA/crlnumber

[root@CentOS7 ~]# cat /etc/pki/CA/crlnumber

02     //这里是02,是因为上面已经吊销了一个证书(该文件会自增)

[root@CentOS7 ~]# openssl ca -gencrl -out /etc/pki/CA/crl.pem

Using configuration from /etc/pki/tls/openssl.cnf

[root@CentOS7 ~]# cat /etc/pki/CA/crl/crl.pem

-----BEGIN X509 CRL-----

MIIB7TCB1gIBATANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJDTjEQMA4GA1UE

CAwHYmVpamluZzEQMA4GA1UEBwwHYmVpamluZzELMAkGA1UECgwCaXQxDTALBgNV

BAsMBGl0MDExEjAQBgNVBAMMCWNhLml0LmNvbTEbMBkGCSqGSIb3DQEJARYMcm9v

·····

·····

fWlVXNdTBy5NpqwmAgR0eNwJ+2lsnAT0PQBwPsxp9aloc60xBSAGmAzdZVhfNCe0

BdNog5gAo/x5VbNGmz8dNYI=

-----END X509 CRL-----

生成证书链

要生成证书链,需要有多个证书文件,其中包括根证书、中间证书和服务器证书。以下是使用openssl生成证书链的步骤:

生成根证书

使用openssl生成根证书,可以参考以下命令:

```

openssl req -x509 -newkey rsa:2048 -keyout root.key -out root.crt -days 3650

```

生成中间证书

如果需要生成中间证书,可以使用以下命令:

```

openssl req -newkey rsa:2048 -keyout intermediate.key -out intermediate.csr

openssl x509 -req -in intermediate.csr -CA root.crt -CAkey root.key -CAcreateserial -out intermediate.crt -days 3650

```

生成服务器证书

使用以下命令生成服务器证书:

```

openssl req -newkey rsa:2048 -keyout server.key -out server.csr

openssl x509 -req -in server.csr -CA intermediate.crt -CAkey intermediate.key -CAcreateserial -out server.crt -days 3650

```

生成证书链

将根证书、中间证书和服务器证书合并成一个文件,即可生成证书链:

```

cat server.crt intermediate.crt root.crt > certificate-chain.crt

```

其中,certificate-chain.crt就是生成的证书链文件。

注意:在生成证书链时,需要按照顺序将证书文件合并,即服务器证书在前,中间证书在中间,根证书在最后。

格式文件

CSR(Certificate Signing Request)格式文件

CSR文件是用于向证书颁发机构(CA)申请数字证书的文件格式。它包含了申请者的公钥和一些身份信息,如国家、组织、单位、域名等。CSR文件通常是以文本文件的形式存在,后缀名为.csr。

KEY格式文件

KEY文件是用于存储私钥的文件格式。私钥是用于加密和解密数据的关键,因此必须妥善保管。KEY文件通常是以文本文件的形式存在,后缀名为.key。

PEM(Privacy-Enhanced Mail)格式文件

PEM文件是一种常见的证书文件格式,它可以存储证书、私钥、CSR等信息。PEM文件采用Base64编码,可以通过文本编辑器打开查看。PEM文件通常以.crt、.pem、.key等后缀名存在。

PFX/P12(Personal Information Exchange)格式文件

PFX/P12文件是一种常见的证书文件格式,它可以存储证书、私钥等信息,并且可以设置密码保护。PFX/P12文件通常是二进制格式的,后缀名为.pfx或.p12。

DER(Distinguished Encoding Rules)格式文件

DER文件是一种二进制格式的证书文件,它通常用于在网络上传输证书。DER文件不能直接用文本编辑器打开查看,但可以通过一些工具进行解析。DER文件通常以.crt、.der等后缀名存在。

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

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

相关文章

多目标平衡黏菌算法(MOEOSMA)求解八个现实世界受约束的工程问题

目录 1 受约束的工程问题 1.1 减速器设计问题(Speed reducer design problem) 1.2 弹簧设计问题(Spring design problem) 1.3 静压推力轴承设计问题(Hydrostatic thrust bearing design problem) 1.4 振动平台设计问题(Vibrating platform design problem) 1.5 汽车侧面碰…

云安全【阿里云ECS攻防】

关于VPC的概念还请看:记录一下弹性计算云服务的一些词汇概念 - 火线 Zone-安全攻防社区 一、初始化访问 1、元数据 1.1、SSRF导致读取元数据 如果管理员给ECS配置了RAM角色,那么就可以获得临时凭证 如果配置RAM角色 在获取ram临时凭证的时候&#xff…

铁道货车通用技术条件

声明 本文是学习GB-T 5600-2018 铁道货车通用技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 90 mm90 mm。 B.2 制造要求 B.2.1 车体钢结构组成后: a) 敞车钢质侧、端板的平面度公差应小于或等于15 mm/m; 压型侧、端板的平面度…

python生成中金所期权行权价

参考沪深300股指期权的合约表,写一个工具函数: 使用方法 def get_format_option_gap(value: float, deviation: int 0): # 根据中证1000指数获取点位"""根据标准的行权价,生成不同档位的期权列表,适合中金所:…

[红明谷CTF 2021]write_shell %09绕过过滤空格 ``执行

目录 1.正常短标签 2.短标签配合内联执行 看看代码 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){ 过滤了 木马类型的东西// if(preg_match("/| |_||php/&quo…

代码随想录Day52 | 300. 最长递增子序列 | 674. 最长连续递增序列 | 718. 最长重复子数组

300. 最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {if (nums.size() < 1) return nums.size();vector<int> f(nums.size(), 1);int result 0;for (int i 1; i < nums.size(); i) {for (int j 0; j < i; j) {if (n…

最新AI智能创作系统源码V2.6.2/AI绘画系统/支持GPT联网提问/支持Prompt应用

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图…

验证曲线(validation_curve)项目实战

验证曲线 validation_curve 一、简介 validation_curve验证曲线&#xff0c;可确定不同参数值下的训练和测试分数 根据指定参数的不同值计算估计器的得分 这与使用一个参数的网格搜索类似。不过&#xff0c;这也会计算训练得分&#xff0c;只是一个用于绘制结果的工具。 二、…

【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 2 Oct 2023 Totally 42 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Learning Decentralized Flocking Controllers with Spatio-Temporal Graph Neural Network Authors Siji Chen, Yanshen Sun, …

WordPress主题开发( 十)之—— 条件标签函数(上)

这里写目录标题 什么是条件标签函数&#xff1f;条件标签函数的使用场景使用条件标签函数的注意事项常用的条件标签函数主页示例:is_front_page() 示例:管理后台is_admin() 示例:单个文章页面is_single() 示例:is_single(17) 示例:is_single(Hello World) 示例:is_single(hello…

C语言解析GPS源数据

文章目录 一、GPS数据格式介绍二、GPS字段含义三、C语言解析数据代码3.1 解析每个字段数据3.2 解析定位数据 一、GPS数据格式介绍 GPS&#xff08;全球定位系统&#xff09;数据格式常见的是NMEA 0183格式&#xff0c;NMEA 0183格式是一种用于导航设备间传输数据的标准格式&am…

一个用java的get请求

java发送一个get请求&#xff0c;请求参数classyanfa&#xff0c;使用Authorization认证&#xff0c;在Request Header里填充Authorization&#xff1a; Bearer {token}进行请求认证&#xff0c;token为&#xff1a;sadagdagdgdgfagfd ,另外在Header里补充App标识&#xff0c;X…

R语言中更改R包安装路径

看到这些包下载到我的C盘&#xff0c;我蛮不爽的&#xff1a; 所以决定毫不犹豫的改到D盘&#xff1a; 首先&#xff0c;我们需要在RStudio中新建一个初始启动文件&#xff1a; file.edit(~/.Rprofile) 然后去你喜欢的环境新建一个文件夹存放安装的包的位置&#xff0c;我喜欢…

uboot启动流程-涉及board_init_f 函数

一. uboot启动流程 _main 函数中会调用 board_init_f 函数&#xff0c;本文简单分析一下 board_init_f 函数。 二. board_init_f 函数 board_init_f 函数主要有两个工作&#xff1a; (1) 初始化一系列外设&#xff0c;比如串口、定时器&#xff0c;或者打印一些消息等。…

那些项目中遇到的注解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言VO包与实体类中注解&#xff1a;DataI18nExcelExcel(name "a.abc", width 20)TableField(exist false) 忽略这个字段ApiModelProperty(value &qu…

动态规划算法(2)--最大子段和与最长公共子序列

目录 一、最大子段和 1、什么是最大子段和 2、暴力枚举 3、分治法 4、动态规划 二、最长公共子序列 1、什么是最长公共子序列 2、暴力枚举法 3、动态规划法 4、完整代码 一、最大子段和 1、什么是最大子段和 子段和就是数组中任意连续的一段序列的和&#xff0c;而…

[Linux]记录plasma-wayland下无法找到HDMI接口显示器的问题解决方案

内核&#xff1a;Linux 6.5.5-arch1-1 Plasma 版本&#xff1a;5.27.8 窗口系统&#xff1a;Wayland 1 问题 在前些时候置入了一块显示器&#xff0c;接口较多&#xff0c;有 HDMI 接口&#xff0c;type-C 接口。在 X11 中可以找到外接显示器&#xff0c;但是卡顿明显&#xf…

算法排序在程序中有什么作用

算法排序是将一组数据按照一定的规则进行排列的过程。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;从前往后逐个比较相邻元素&#xff0c;若逆序则交换&#xff0c;每一轮确定一个最大元…

阿里云服务器方升架构、自研硬件、AliFlash技术创新

阿里云服务器技术创新&#xff1a;服务器方升架构及自研硬件、自研存储硬件AliFlash和阿里云异构计算加速平台&#xff0c;阿里云百科分享阿里云服务器有哪些技术创新&#xff1a; 目录 服务器技术创新 服务器方升架构及自研硬件 自研存储硬件AliFlash 阿里云异构计算加速…

【Excel】快速提取某个符号前面的数据内容

【问题描述】 在使用excel整理数据过程中&#xff0c;经常与需要调整数据后&#xff0c;进行使用。 例如凭证导出后&#xff0c;科目列是包含科目编码和科目名称的。 但由于要将数据复制到其他的导入模板上使用&#xff0c;对应的模板只需要科目编码&#xff0c;不需要科目名称…