tencent cloud

边缘安全加速平台 EO

动态与公告
产品动态
安全公告
产品公告
产品简介
产品概述
产品优势
应用场景
EdgeOne 与 CDN 等产品功能对比
使用限制
购买指南
试用套餐体验权益说明
免费版套餐使用说明
计费概述
计费项目
购买指引
续费指引
欠费与退款说明
套餐选型对比
关于“干净流量”计费说明
DDoS 防护容量说明
快速入门
选择业务场景
快速接入网站安全加速
通过 Pages 快速部署网站
域名服务与源站配置
域名服务
HTTPS 证书
源站配置
站点加速
概述
访问控制
智能加速
缓存配置
文件优化
网络优化
URL 重写
修改头部
修改应答内容
规则引擎
图片与视频处理
单连接下载限速
DDoS 与 Web 防护
概述
DDoS 防护
Web 防护
Bot 管理
API 资产识别(Beta)
边缘函数
概述
快速指引
操作指引
Runtime APIs
示例函数
实践教程
Pages
四层代理
概述
新建四层代理实例
修改四层代理实例配置
停用/删除四层代理实例
批量配置转发规则
获取客户端真实IP
数据分析与日志服务
日志服务
数据分析
告警服务
站点与计费管理
计费管理
站点管理
版本管理
通用策略
通用参考
配置语法
请求与响应行为
国家/地区及对应代码枚举
Terraform
Terraform 简介
安装和配置 Terraform
实践教程
自动预热/清除缓存
防盗刷/盗链实践
HTTPS 相关实践
加速优化
流量调度
数据分析与告警
第三方日志平台集成实践
对象存储类源站(例如:COS)配置实践
跨域响应配置
API 文档
History
Introduction
API Category
Making API Requests
Site APIs
Acceleration Domain Management APIs
Site Acceleration Configuration APIs
Edge Function APIs
Alias Domain APIs
Security Configuration APIs
Layer 4 Application Proxy APIs
Content Management APIs
Data Analysis APIs
Log Service APIs
Billing APIs
Certificate APIs
Origin Protection APIs
Load Balancing APIs
Diagnostic Tool APIs
Custom Response Page APIs
API Security APIs
DNS Record APIs
Content Identifier APIs
Legacy APIs
Ownership APIs
Image and Video Processing APIs
Multi-Channel Security Gateway APIs
Version Management APIs
Data Types
Error Codes
常见问题
产品特性相关问题
DNS 记录相关问题
域名配置相关问题
站点加速相关问题
数据与日志相关问题
安全防护相关问题
源站配置相关问题
排障指南
异常状态码参考
EdgeOne 4XX/5XX 状态码排障指南
520/524状态码排障指南
521/522 状态码排障指南
工具指南
相关协议
Service Level Agreement
源站防护启用特别约定
TEO 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

使用 OpenSSL 生成自签名证书

PDF
聚焦模式
字号
最后更新时间: 2025-12-09 16:58:00
所有的服务端和客户端证书一般情况下都需要向权威 CA 证书机构去申请,以保障能够被不同的操作系统和浏览器信任,CA 机构一般会收取一定的证书费用。如果您当前只是需要一本 HTTPS 证书进行测试使用,或者在企业内部使用,也可以自行通过 OpenSSL 颁发自签名证书。参考步骤如下:
RSA 算法证书
ECC 算法证书

步骤一:生成根证书

1. 通过以下命令创建根证书私钥,以生成 4096 密钥长度的 RSA 证书为例,将生成的私钥保存为 ca-rsa.key 文件。
openssl genrsa -out ca-rsa.key 4096
2. 使用以上证书私钥生成证书签名请求文件(CSR),保存为 ca-rsa.csr,以下命令通过 -subj 指定了证书的基本信息,其中:
C=CN 代表国家。
ST=State 代表省份。
L=City 代表城市。
O= Example Org 代表组织。
OU=Example CA 代表部门。
CN=Example Root CA 代表该证书的通用名称,在 CA 证书中,该字段可描述 CA 用途。如果是域名证书,需要在该字段指定证书签发的域名。
openssl req -new -key ca-rsa.key -out ca-rsa.csr -subj "/C=US/ST=State/L=City/O=Example Org/OU=Example CA/CN=Example Root CA"
3. 根据证书的签名请求文件,创建根证书公钥,有效期为 3650 天,保存为 ca-rsa.crt。其中 -extfile 中指定了该证书为 CA 证书。
openssl x509 -req -in ca-rsa.csr -out ca-rsa.crt -signkey ca-rsa.key -days 3650 -sha256 -extfile <(printf "basicConstraints=critical,CA:TRUE\\nkeyUsage=critical,keyCertSign,cRLSign\\nsubjectKeyIdentifier=hash\\n")
4. 签发完成后,验证该证书是否为 CA 证书。
openssl x509 -in ca-rsa.crt -noout -text | grep -A2 "X509v3 Basic Constraints"
输出结果中,包含有 CA:TRUE 则为正确的 CA 证书。参考输出结果如下:
X509v3 Basic Constraints: critical
CA:TRUE # 代表该证书为 CA 证书。
X509v3 Key Usage: critical

步骤二:签发域名证书

以签发一本指定域名 www.example.com 的证书为例,您可以通过以上生成的 CA 证书,开始自签发域名证书:
1. 通过以下命令创建证书私钥,以生成 4096 密钥长度的 RSA 证书为例,将生成的私钥保存为 rsa-domain.key 文件。
openssl ecparam -name secp384r1 -genkey -noout -out rsa-domain.key
2. 使用以上证书私钥生成证书签名请求文件(CSR),保存为 rsa-domain.csr,以下命令通过 -subj 指定了证书的基本信息, 请注意将 CN 字段内容替换为你想签发的域名,本示例中以 www.example.com 为例。
openssl req -new -key rsa-domain.key -out rsa-domain.csr -subj "/C=US/ST=State/L=City/O=Example Org/OU=Example CA/CN=www.example.com"
3. 使用 CA 证书签名,生成域名证书公钥,有效期为 3650 天,保存为 rsa-domain.crt
openssl x509 -req -in rsa-domain.csr -out rsa-domain.crt -CA ca-rsa.crt -CAkey ca-rsa.key -days 3650
4. 对比 CA 证书和域名证书公钥,验证签发后的域名证书的证书链是否正确。
openssl verify -CAfile ca-rsa.crt rsa-domain.crt
输出结果中,如果显示 rsa-domain.crt:OK,则说明该证书签发链路正确。参考如下:
rsa-domain.crt: OK

步骤一:生成根证书

1. 通过以下命令创建根证书私钥,以生成 secp384r1 加密算法的 ECC 证书为例,将生成的私钥保存为 ca-ecc.key 文件。
openssl ecparam -name secp384r1 -genkey -noout -out ca-ecc.key
2. 使用以上证书私钥生成证书签名请求文件(CSR),保存为 ca-ecc.csr,以下命令通过 -subj 指定了证书的基本信息,其中:
C=CN 代表国家。
ST=State 代表省份。
L=City 代表城市。
O= Example Org 代表组织。
OU=Example CA 代表部门。
CN=Example Root CA 代表该证书的通用名称,在 CA 证书中,该字段可描述 CA 用途。如果是域名证书,需要在该字段指定证书签发的域名。
openssl req -new -key ca-ecc.key -out ca-ecc.csr -subj "/C=US/ST=State/L=City/O=Example Org/OU=Example CA/CN=Example Root CA"
3. 根据证书的签名请求文件,创建根证书公钥,有效期为 3650 天,保存为 ca-ecc.crt。其中 -extfile 中指定了该证书为 CA 证书。
openssl x509 -req -in ca-ecc.csr -out ca-ecc.crt -signkey ca-ecc.key -days 3650 -sha256 -extfile <(printf "basicConstraints=critical,CA:TRUE\\nkeyUsage=critical,keyCertSign,cRLSign\\nsubjectKeyIdentifier=hash\\n")
4. 签发完成后,验证该证书是否为 CA 证书。
openssl x509 -in ca-ecc.crt -noout -text | grep -A2 "X509v3 Basic Constraints"
输出结果中,包含有 CA:TRUE 则为正确的 CA 证书。参考输出结果如下:
X509v3 Basic Constraints: critical
CA:TRUE # 代表该证书为 CA 证书。
X509v3 Key Usage: critical

步骤二:签发域名证书

以签发一本指定域名 www.example.com 的证书为例,您可以通过以上生成的 CA 证书,开始自签发域名证书:
1. 通过以下命令创建证书私钥,以生成 secp384r1 加密算法的 ECC 证书为例,将生成的私钥保存为 ecc-domain.key 文件。
openssl ecparam -name secp384r1 -genkey -noout -out ecc-domain.key
2. 使用以上证书私钥生成证书签名请求文件(CSR),保存为 ecc-domain.csr,以下命令通过 -subj 指定了证书的基本信息, 请注意将 CN 字段内容替换为你想签发的域名,本示例中以 www.example.com 为例。
openssl req -new -key ecc-domain.key -out ecc-domain.csr -subj "/C=US/ST=State/L=City/O=Example Org/OU=Example CA/CN=www.example.com"
3. 使用 CA 证书签名,生成域名证书公钥,有效期为 3650 天,保存为 ecc-domain.crt
openssl x509 -req -in ecc-domain.csr -out ecc-domain.crt -CA ca-ecc.crt -CAkey ca-ecc.key -days 3650
4. 对比 CA 证书和域名证书公钥,验证签发后的域名证书的证书链是否正确。
openssl verify -CAfile ca-ecc.crt ecc-domain.crt
输出结果中,如果显示 ecc-domain.crt:OK,则说明该证书签发链路正确。
ecc-domain.crt: OK


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈