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

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

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

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

第一步,制作CA根证书

和往期文章:自签名证书 -- 无敌牛 中的1.1 和1.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: 上次颁发证书用到的证书编号

相关推荐
科研邪修法5 分钟前
培训PDF保护配置:把需求转换成可验收权限
linux·服务器·网络
分布式存储与RustFS1 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Lansonli2 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
雪落漂泊3 小时前
Liunux进程(七):程序控制篇(中)
linux·运维·windows
分布式存储与RustFS3 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
可乐ea16 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
分布式存储与RustFS20 小时前
群晖 NAS 被 C3RB3R 锁了:本地备份一起被加密,RustFS 对象锁为什么删不掉
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
真好啊又活了一天20 小时前
服务器和虚机配置IPV6
运维·服务器·github
zixu_star20 小时前
定时任务是什么?从日常自动化到 AI 应用,软件如何自动执行任务?
运维·人工智能·自动化