生成根证书
1. 创建OpenSSL配置文件
首先,创建一个OpenSSL配置文件,例如openssl.cnf
。该文件可以包含如下内容:
[ req ]
default_bits = 2048
default_keyfile = rootCA.key
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no
[ req_distinguished_name ]
C = CN # 国家
ST = Beijing # 省份
L = Beijing # 城市
O = My Company # 组织名称
OU = My Unit # 组织单位
CN = My Root CA # 公共名称
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = CA:true
keyUsage = critical, digitalSignature, keyCertSign, cRLSign
配置文件说明
[req]
default_bits: 指定密钥长度,通常使用 2048 位或 4096 位。
default_keyfile: 输出密钥文件的默认名称。
distinguished_name: 指定使用的 DN 配置(例如 [req_distinguished_name])。
x509_extensions: 用于定义证书扩展,指向 [v3_ca] 配置。
prompt: 设置为 no 表示不提示交互信息,直接使用配置中的值。
[req_distinguished_name]
定义证书的主体字段:
C: 国家,使用 ISO 3166-1 的两位国家代码,例如 CN(中国)。
ST: 省份名称。
L: 城市名称。
O: 组织名称。
OU: 组织单位名称。
CN: 公共名称(通常是 CA 的名称)。
[v3_ca]
定义证书扩展:
subjectKeyIdentifier: 标识证书的公钥。
authorityKeyIdentifier: 标识签发者密钥。
basicConstraints: 指定该证书为 CA 证书(CA:true)。
keyUsage: 限定证书的用途,比如 keyCertSign 和 cRLSign。
2. 使用命令生成根证书
# 使用命令生成根证书
openssl req -x509 -new -nodes -keyout rootCA.key -sha256 -days 3650 -out rootCA.pem -config openssl.cnf
# 验证生成的证书
openssl x509 -in rootCA.pem -text -noout
说明
rootCA.key 是生成的私钥文件
rootCA.pem 是生成的根证书文件。