openssl颁发包含主题替代名的证书–SAN

原文地址:openssl颁发包含主题替代名的证书--SAN -- 无敌牛

欢迎参观我的个人博客:无敌牛 -- 技术/著作/典籍/分享等

在 X.509 证书中,commonName(CN)字段只能有一个值。如果让证书支持多个域名和IP地址,需要用到主题替代名称--subjectAltName。

第一步,制作CA根证书

和往期文章:自签名证书 -- 无敌牛 中的1.11.2步骤是一样。操作如下图:

第二步:颁发证书

需要用到5个文件:

1、第一步产生的CA私钥

2、第一步产生的CA根证书

3、服务端需要创建一个私钥 ,一般扩展名为 .key

4、服务端需要创建证书配置文件 ,一般扩展名为 .csr

5、服务端用自己的私钥和配置文件出创建一个证书请求文件 ,一般扩展名为 .crt

2.1 创建服务端的私钥

指令:openssl genrsa -out private.key 2048 和第一步创建私钥的方法是一样的

2.2 创建证书配置文件

命名为:csr.conf

default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = CN
stateOrProvinceName = Shandong
localityName = Qingdao
organizationName = madbull
organizationalUnitName = IT
commonName = node1
emailAddress = xxx@xxx.com

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = node1
DNS.2 = madbull.site
DNS.3 = localhost
IP.1 = 127.0.0.1
IP.2 = 192.168.1.123

其中 commonName 和 alt_names的配置 根据自己的实际情况填写 域名和主机名。

配置解释:

default_bits: 设置默认的密钥长度为 2048 位。

prompt: 设置为 no,表示在生成 CSR 时不提示用户输入信息,而是使用配置文件中的默认值。

default_md: 设置默认的消息摘要算法为 SHA-256。

distinguished_name: 指向 [req_distinguished_name] 段,定义了证书请求的基本信息。

req_extensions: 指向 [v3_req] 段,定义了证书请求中的扩展字段。

subjectAltName: 指向 [alt_names] 段

2.3 生成证书请求文件

指令:openssl req -new -key private.key -out req.csr -config csr.conf

注意,这里多了指定配置文件**-config csr.conf**

可用:openssl req -in req.csr -noout -text 查看请求证书文件内容。

2.4 颁发证书

指令:openssl x509 -req -in req.csr -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -out public.crt -days 10240 -sha256 -extensions v3_req -extfile csr.conf

注意,这里多了指定扩展段名称和配置文件 -extensions v3_req -extfile csr.conf

可用:openssl x509 -in public.crt -noout -text 查看证书内容。


自此,当前目录下有7个文件,对于服务端只需要私钥和证书就可以了。下面分别介绍一下这些都是什么文件:

csr.conf: 证书配置文件

private.key: 服务端私钥

public.crt: 服务端证书

req.csr: 服务端生成的证书请求文件

root-ca.crt: CA根的证书

root-ca.key: CA根的私钥

root-ca.srl: 上次颁发证书用到的证书编号

相关推荐
今朝无言24 分钟前
Tri Mode Ethernet MAC IP核详解
网络·网络协议·tcp/ip·fpga开发
C++忠实粉丝1 小时前
计算机网络socket编程(5)_TCP网络编程实现echo_server
网络·c++·网络协议·tcp/ip·计算机网络·算法
sun0077002 小时前
ubuntu增加swap交换空间
linux·运维·服务器
苹果醋32 小时前
前端面试之九阴真经
java·运维·spring boot·mysql·nginx
Diamond技术流3 小时前
从0开始学习Linux——环境变量详解
linux·服务器·学习·centos·软件安装·环境变量
疯狂吧小飞牛3 小时前
openssl创建自签名证书
linux·服务器·ssl
qhd吴飞3 小时前
在linux下用二进制方式安装mysql8
linux·运维·服务器
刘登辉3 小时前
雷电模拟器charles代理抓包
运维·服务器
股票GPT分析3 小时前
《Python 股票交易分析:开启智能投资新时代》(二)
大数据·服务器·python·c#·fastapi