用户在企业内网部署私有CA(SSL证书颁发机构),是建立自主PKI(公钥基础设施)的核心。它能让用户完全掌控内部服务器、设备、应用的身份验证和加密通信。下面我将为用户提供一个清晰、安全、可操作的部署指南。
一、部署前规划
首先,明确你的需求和技术选型:
明确用途:用于哪些场景?(如:Web服务器HTTPS、VPN客户端认证、代码/文档签名、设备认证等)。
选择算法:根CA证书有效期很长,必须使用强加密。RSA 4096位仍是稳妥选择。若追求更优性能和安全,可考虑使用ECC(如secp384r1曲线),这与我们之前讨论的算法趋势一致。
规划结构:绝对不要用根CA直接签发终端证书。应采用分层结构:根CA -> 中间CA -> 终端证书。这样做可以隔离风险,即使中间CA私钥泄露,只需吊销该中间CA,而无需动摇整个根CA的信任。
确定有效期:根CA可设为10-20年;中间CA为5-10年;终端证书为1-2年或更短。
二、分步部署指南以下以使用最广泛的工具 OpenSSL 为例,演示部署过程。请先在服务器上安装好OpenSSL。
阶段一:创建最顶层的根CA(Root CA)
根CA是信任的源头,必须离线生成、严格隔离、妥善保管。
创建目录和配置文件
bash
mkdir -p /root/my_private_ca/root/{certs,private,crl,newcerts}
cd /root/my_private_ca/root
touch index.txt
echo 1000 > serial
准备一个OpenSSL配置文件(如 root_openssl.cnf),定义CA的各项参数。
生成根CA的私钥和自签名证书
bash
生成一个强加密的私钥(以RSA 4096为例)
openssl genrsa -aes256 -out private/root_ca.key.pem 4096
生成自签名根证书,有效期20年
openssl req -config root_openssl.cnf \
-key private/root_ca.key.pem \
-new -x509 -days 7300 -sha256 -extensions v3_ca \
-out certs/root_ca.cert.pem
执行后会要求设置私钥密码和证书信息(国家、组织、通用名等)。通用名建议明确,如“MyCorp Internal Root CA - G1”。
安全存放
将 private/root_ca.key.pem(根私钥)离线存储,如存入加密的USB密钥,断开网络连接并锁入保险柜。日常工作绝不使用它。
阶段二:创建用于日常签发的中间CA(Intermediate CA)
中间CA在线运行,负责签发终端证书。即使私钥泄露,影响范围也有限。
创建中间CA目录结构
bash
mkdir -p /root/my_private_ca/intermediate/{certs,private,crl,newcerts,csr}
cd /root/my_private_ca/intermediate
touch index.txt
echo 1000 > serial
生成中间CA的私钥和证书签名请求(CSR)
bash
openssl genrsa -aes256 -out private/intermediate_ca.key.pem 4096
openssl req -config intermediate_openssl.cnf -new -sha256 \
-key private/intermediate_ca.key.pem \
-out csr/intermediate_ca.csr.pem
用根CA为中间CA证书签名
此步骤需要在根CA的环境下操作(即使用离线保存的根私钥)。
bash
假设已将根CA证书和私钥临时拷入安全环境
openssl ca -config root_openssl.cnf -extensions v3_intermediate_ca \
-days 3650 -notext -md sha256 \
-in /path/to/intermediate_ca.csr.pem \
-out intermediate_ca.cert.pem
完成后,将签好的 intermediate_ca.cert.pem 移回中间CA目录的 certs/ 下。
形成证书链
bash
cat certs/intermediate_ca.cert.pem ../root/certs/root_ca.cert.pem > certs/ca-chain.cert.pem
这个 ca-chain.cert.pem 文件至关重要,服务器或客户端在部署时需要它来建立完整的信任链。
阶段三:为内部服务签发终端证书
现在你可以用中间CA为内部服务(如 internal.app.mycorp.com)签发证书了。
生成服务私钥和CSR
bash
openssl genrsa -out private/internal.app.mycorp.com.key.pem 2048
openssl req -config intermediate_openssl.cnf \
-key private/internal.app.mycorp.com.key.pem \
-new -sha256 -out csr/internal.app.mycorp.com.csr.pem
用中间CA签发证书
bash
openssl ca -config intermediate_openssl.cnf \
-extensions server_cert -days 825 -notext -md sha256 \
-in csr/internal.app.mycorp.com.csr.pem \
-out certs/internal.app.mycorp.com.cert.pem
部署证书
将以下文件交给应用服务器(如Nginx):
certs/internal.app.mycorp.com.cert.pem (终端证书)
private/internal.app.mycorp.com.key.pem (服务私钥)
certs/ca-chain.cert.pem (完整的CA证书链)
三、安全与最佳实践
文件权限:所有 .key.pem 私钥文件权限应设为 600,仅限属主读写。CA目录应严格限制访问。
私钥安全:根CA和中间CA的私钥必须用强密码(-aes256)加密保护。
信任根证书:将 root_ca.cert.pem 安全地分发并导入到所有需要信任此私有CA的内部设备、浏览器和操作系统的信任根证书存储区。这是内部服务能被“绿锁”访问的关键。
维护与审计:
定期检查 index.txt 查看已签发证书。
如私钥泄露,立即使用 openssl ca -revoke 吊销证书,并生成新的证书吊销列表(CRL)或部署OCSP响应器。
建立定期轮换计划,为中间CA和根CA续期(远在过期之前)。
四、与现有架构集成
如果你已部署或计划部署混合云统一管理平台,可以将此私有CA集成进去。许多企业级CLM平台支持接入私有CA作为证书源,实现从申请、自动签发到部署的全流程自动化,这能极大提升你在混合云中管理内部SSL证书的效率。
以上这个方案为用户提供了从零开始搭建私有CA的完整路径。如果用户有更具体的环境细节(例如,主要服务于Windows/Linux服务器,还是Kubernetes集群),我们将可以提供更具针对性的配置或集成建议。