2.2. 使用 OpenSSL 创建私有 CA
当您的情况需要在您的内部网络内验证实体时,私有证书颁发机构(CA)非常有用。例如,当使用基于您控制下的 CA 签名的证书的身份验证创建 VPN 网关时,或者您不想支付商业 CA 时,请使用私有 CA。要在这样的用例中签名证书,私有 CA 使用自签名证书。
前提条件
-
您有
root
权限或使用sudo
输入管理命令的权限。需要此类权限的命令标记为#
。
流程
为您的 CA 生成私钥。例如,以下命令会创建一个 256 位 Elliptic Curve Digital Signature Algorithm(ECDSA)密钥:
openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out <ca.key>
$ openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out <ca.key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 密钥生成过程的时间取决于主机的硬件和熵、所选算法以及密钥长度。
使用上一个命令生成的私钥创建证书:
openssl req -key <ca.key> -new -x509 -days 3650 -addext keyUsage=critical,keyCertSign,cRLSign -subj "/CN=<Example_CA>" -out <ca.crt>
$ openssl req -key <ca.key> -new -x509 -days 3650 -addext keyUsage=critical,keyCertSign,cRLSign -subj "/CN=<Example_CA>" -out <ca.crt>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成的
ca.crt
文件是一个自签名 CA 证书,可用来为其他证书签名 10 年。对于私有 CA,您可以将 < Example_CA> 替换为作为通用名称(CN)的任何字符串。对 CA 的私钥设置安全权限,例如:
chown <root>:<root> <ca.key> chmod 600 <ca.key>
# chown <root>:<root> <ca.key> # chmod 600 <ca.key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
要将自签名 CA 证书用作客户端系统上的信任锚,请将 CA 证书复制到客户端,并以
root
用户身份将其添加到客户端的系统范围信任存储中:trust anchor <ca.crt>
# trust anchor <ca.crt>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请参阅 第 3 章 使用共享的系统证书 了解更多信息。
验证
创建证书签名请求(CSR),并使用您的 CA 为请求签名。CA 必须成功创建一个基于 CSR 的证书,例如:
openssl x509 -req -in <client-cert.csr> -CA <ca.crt> -CAkey <ca.key> -CAcreateserial -days 365 -extfile <openssl.cnf> -extensions <client-cert> -out <client-cert.crt>
$ openssl x509 -req -in <client-cert.csr> -CA <ca.crt> -CAkey <ca.key> -CAcreateserial -days 365 -extfile <openssl.cnf> -extensions <client-cert> -out <client-cert.crt> Signature ok subject=C = US, O = Example Organization, CN = server.example.com Getting CA Private Key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请参阅 第 2.5 节 “使用私有 CA 使用 OpenSSL 为 CSR 发布证书” 了解更多信息。
显示有关自签名 CA 的基本信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证私钥的一致性:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow