自建PKI根证书并颁发时间戳证书的完整步骤


前言

提示:命令中的 \ 是指换行符,这样方便阅读

使用工具

openssl

下载地址

openssl

本文使用的是 Win64 OpenSSL v3.3.1.MSI 安装包,

安装OpenSSL

  1. 下载并安装OpenSSL

    • 安装OpenSSL,记住安装路径(例如C:\OpenSSL-Win32)。
  2. 配置环境变量

    • 右键点击“计算机”图标,选择“属性”。
    • 点击“高级系统设置”,然后点击“环境变量”。
    • 在“系统变量”中找到并编辑“Path”变量,添加OpenSSL的bin目录路径,例如:C:\OpenSSL-Win32\bin
    • 打开命令提示符,输入openssl,确保OpenSSL已正确安装。

步骤一:创建根证书

  1. 创建工作目录

    mkdir C:\OpenSSL-Win32\ca
    cd C:\OpenSSL-Win32\ca
    
  2. 生成根证书私钥

    openssl genrsa -out JemmyLoveJennyEVRootCA.key 4096
    

    这里使用RSA 4096位加密算法生成私钥,名为JemmyLoveJennyEVRootCA.key。

  3. 准备根证书配置文件openssl.cnf,内容如下:

    [req]
    prompt = no
    distinguished_name = dn
    x509_extensions = v3_ca
    
    [dn]
    commonName = JemmyLoveJenny EV Root CA
    organizationName = JemmyLoveJenny Inc.
    countryName = CN
    
    [v3_ca]
    keyUsage = critical, keyCertSign, cRLSign
    basicConstraints = critical, CA:true
    subjectKeyIdentifier = hash
    

    这个配置文件定义了根证书的Subject DN和X509扩展项,表明这是一个根CA证书。

  4. 生成根证书请求文件

    openssl req -new -key JemmyLoveJennyEVRootCA.key -out JemmyLoveJennyEVRootCA.csr -sha256 -config ./openssl.cnf
    

    使用步骤1生成的私钥和步骤2的配置文件,生成根证书请求文件JemmyLoveJennyEVRootCA.csr。

  5. 自签名颁发根证书

    openssl x509 -req -sha256 -days 7300 -extfile ./openssl.cnf -extensions v3_ca \
         -signkey JemmyLoveJennyEVRootCA.key -in JemmyLoveJennyEVRootCA.csr \
         -out JemmyLoveJennyEVRootCA.crt
    

    使用根证书私钥对请求文件进行自签名,生成根证书JemmyLoveJennyEVRootCA.crt,有效期为20年。


步骤二:颁发时间戳证书

颁发一个符合要求的时间戳证书。以下是详细步骤:

  1. 生成时间戳服务器的私钥(PKCS#1格式):
openssl genrsa -out tsa_pkcs1.key 2048
  1. 创建时间戳证书签发请求(CSR):
openssl req -new -key tsa_pkcs1.key -out tsa.csr -config tsa.cnf

其中,tsa.cnf文件内容如下:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_tsa
prompt = no

[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = JemmyLoveJenny
OU = JemmyLoveJenny TSA
CN = JemmyLoveJenny TSA

[v3_tsa]
extendedKeyUsage = critical,timeStamping
keyUsage = critical,digitalSignature
  1. 使用根证书签发时间戳证书:
openssl x509 -req -in tsa.csr -out tsa.crt -CA JemmyLoveJennyEVRootCA.crt -CAkey JemmyLoveJennyEVRootCA.key -CAcreateserial -days 365 -sha256 -extfile tsa.cnf -extensions v3_tsa

请确保根证书JemmyLoveJennyEVRootCA.crt和根证书私钥JemmyLoveJennyEVRootCA.key与签发时间戳证书的CA一致。

  1. 验证时间戳证书:
openssl x509 -in tsa.crt -text -noout

检查输出信息,确保以下内容:

  • 签名算法为sha256WithRSAEncryption
  • 扩展项X509v3 Extended Key Usagecritical的,且只包含Time Stamping
  • 扩展项X509v3 Key Usagecritical的,且包含Digital Signature

现在,您应该得到了一个符合要求的时间戳证书tsa.crt和对应的私钥tsa_pkcs1.key。将它们与根证书一起使用,即可在应用程序中进行时间戳签名。

这样,我们就创建了一个自签名的EV根证书,并用其签发了一个符合要求的时间戳证书。在使用时间戳证书时,需要同时提供根证书以构成完整的证书链。时间戳证书tsa.crt包含了关键的EKU扩展,且其私钥tsa.key是PKCS#1格式。

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值