一、生成根证书私钥
使用OpenSSL工具生成2048位的RSA根证书私钥,该私钥将用于后续证书签名操作:
openssl genrsa -out rootCA.key 2048
此命令生成rootCA.key
文件,建议设置文件权限为600以防止未授权访问。
二、创建根证书配置文件
新建openssl.cnf
文件,定义证书的扩展属性和组织信息:
[ req ] default_bits = 2048 distinguished_name = req_distinguished_name x509_extensions = v3_ca [ req_distinguished_name ] C = CN ST = Shanghai O = MyOrganization CN = My Root CA [ v3_ca ] basicConstraints = critical,CA:TRUE
三、签发自签名根证书
通过以下命令生成有效期10年的自签名根证书:
- 执行证书请求命令:
openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.crt -config openssl.cnf
- 验证证书信息:
openssl x509 -in rootCA.crt -text -noout
生成的rootCA.crt
需要导入到客户端信任库以实现全局信任。
四、签发服务器证书
使用根证书签发服务器证书的流程:
- 生成服务器私钥:
openssl genrsa -out server.key 2048
- 创建证书签名请求(CSR):
openssl req -new -key server.key -out server.csr -subj "/CN=example.com"
- 使用根证书签名:
openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365
建议在签名时添加subjectAltName
扩展以支持多域名。
五、部署与验证
完成后的文件部署步骤:
- 将
rootCA.crt
导入操作系统信任证书库 - 在Web服务器(Nginx/Apache)配置中加载
server.crt
和server.key
- 使用浏览器访问验证证书链完整性
通过openssl verify -CAfile rootCA.crt server.crt
命令可验证证书链有效性。
自签名根证书体系适用于内部测试环境,通过规范的密钥管理、清晰的证书扩展定义和严格的部署验证流程,可建立可靠的私有PKI基础设施。但需注意浏览器默认不信任自签名证书,生产环境建议使用权威CA签发的证书。