边缘加速
  • 站点加速
    • 概述
    • 访问控制
      • Token authentication
        • Token 鉴权
        • 认证方法A
        • 认证方法B
        • 认证方法C
        • 认证方法D
        • 认证方法V
    • 智能加速
    • Cache configuration
      • 概述
      • EdgeOne caching rules introduction
        • EdgeOne 内容缓存规则
        • 缓存键(Cache Key)介绍
        • Vary 特性
      • 缓存配置
        • 自定义 Cache Key
        • 节点缓存 TTL
        • 状态码缓存 TTL
        • 浏览器缓存 TTL
        • 离线缓存
        • 缓存预刷新
      • 清除和预热缓存
        • 清除缓存
        • 预热缓存
        • Prefetch M3U8
      • How to improve the Cache Hit Rate of EdgeOne
    • 文件优化
      • 内容压缩
      • 智能压缩
    • 网络优化
      • HTTP/2
      • HTTP/3(QUIC)
        • 概述
        • 启用 HTTP/3
        • QUIC SDK
          • SDK 概览
          • SDK 下载和集成指引
          • 代码示例
            • Android
            • iOS
          • API 文档
            • Android
            • iOS
      • IPv6 访问
      • 最大上传大小
      • WebSocket
      • 携带客户端 IP 头部回源
      • 携带客户端 IP 地理位置头部回源
      • 开启 gRPC
      • Network Error Logging
    • URL 重写
      • 访问 URL 重定向
      • 回源 URL 重写
    • 修改头部
      • 修改 HTTP 节点响应头
      • 修改 HTTP 回源请求头
    • Modify response content
      • HTTP Response
      • Custom Error Page
    • 规则引擎
      • 概述
      • 规则管理
      • 变量
      • 规则引擎支持的匹配类型与操作
    • Image and video processing
      • Audio and Video Pre-pulling
      • Just-in-Time Image Processing
      • Video Just-In-Time Processing
      • VOD Media Origin
    • Speed limit for single connection download
    • 请求与响应行为
      • HTTP响应
      • 请求处理顺序
      • EdgeOne 默认 HTTP 回源请求头
      • EdgeOne 默认 HTTP 响应头
      • HTTP限制
    • 媒体服务
      • 音视频预拉取
      • 实时图片处理
      • 实时媒体处理
      • 点播媒体源
  • 四层代理
    • 概述
    • 新建四层代理实例
    • 修改四层代理实例配置
    • 停用/删除四层代理实例
    • 批量配置转发规则
    • 获取客户端真实IP
      • 通过 TOA 获取 TCP 协议客户端真实 IP
      • 通过 Proxy Protocol V1/V2 协议获取客户端真实 IP
        • 概述
        • 方式一:通过 Nginx 获取客户端真实 IP
        • 方式二:在业务服务器解析客户端真实 IP
        • Proxy Protocol V1/V2 获取的客户端真实 IP 格式
      • 通过 SPP 协议传递客户端真实 IP
  • 边缘 DNS
    • Domain Name Services
      • 概述
      • DNS resolution for managed domains
        • 修改 DNS 服务器
        • 配置域名 DNS 解析记录
        • 批量导入DNS记录
        • DNS 高级配置
      • Access accelerated domains
        • 添加加速域名
        • 站点/域名归属权验证
        • 修改 CNAME 解析
        • 验证业务访问
      • Traffic scheduling
        • 流量调度管理
    • HTTPS Certificate
      • Overview
      • Edge HTTPS Certificate
        • Overview
        • Deploying/Updating SSL Certificate for A Domain Name
        • Configuring A Free Certificate for A Domain Name
        • Using Keyless Certificate
      • Edge mTLS Authentication
      • Origin Certificate Validation
      • HTTPS configuration
        • Forced HTTPS Access
        • Enabling HSTS
        • SSL/TLS security configuration
          • Configuring SSL/TLS Security
          • TLS Versions and Cipher Suites
        • Enabling OCSP Stapling
      • Related References
        • Using OpenSSL to Generate Self-Signed Certificates
        • Certificate Format Requirements
        • The Difference Between one-way authentication and Mutual authentication
    • 源站配置
      • 负载均衡
        • 概述
        • 快速创建负载均衡实例
        • 健康检查策略介绍
        • 查看源站健康状态
        • 相关参考
          • 负载均衡相关概念
          • 请求重试策略介绍
      • Origin Group Configuration
      • 回源配置
        • 回源超时
        • 配置回源 HTTPS
        • Host Header 重写
        • 回源请求参数设置
        • 回源跟随重定向
        • HTTP/2 回源
        • 分片回源
        • Modify Origin
        • Origin-pull Rate Limiting Policy
      • Origin Protection(Obtaining/Updating Origin IP Address Range)
      • 相关参考
        • 旧版源站组兼容相关问题

Using OpenSSL to Generate Self-Signed Certificates

所有的服务端和客户端证书一般情况下都需要向权威 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