首先应该了解CRL和CDP的基本概念。CRL是证书撤销列表,用于列出被撤销的证书,而CDP就是证书中指定的一个或多个URL,告诉客户端去哪里下载这些CRL。下面我说一下SSL证书CRL分发点(CDP)配置指南
1. 什么是CRL分发点(CDP)?
CRL(证书撤销列表):由证书颁发机构(CA)维护的列表,包含被提前吊销的证书序列号。
CDP(CRL分发点):SSL证书中指定的URL,告知客户端(如浏览器、服务器)如何获取最新的CRL文件以验证证书有效性。
2. 为什么CDP配置重要?
安全性:客户端依赖CDP检查证书是否被吊销,防止中间人攻击或私钥泄露后的滥用。
合规性:部分行业标准(如PCI DSS)要求启用证书吊销检查。
自动化验证:无需手动维护吊销列表,客户端自动通过CDP URL更新。
3. 如何配置CDP?
3.1 生成CSR时指定CDP(以OpenSSL为例)
编辑OpenSSL配置文件(openssl.cnf),添加CDP扩展:
ini
[ req ]
req_extensions = v3_req
[ v3_req ]
crlDistributionPoints = URI:http://crl.example.com/example.crl
生成CSR:
bash
openssl req -new -key private.key -out request.csr -config openssl.cnf
提交CSR至CA后,颁发的证书将包含CDP信息。
3.2 在Web服务器中启用CRL检查
Nginx/Apache:通常自动读取证书中的CDP,需确保:
服务器可访问CDP URL(无防火墙阻挡)。
客户端信任CA的根证书。
Tomcat(server.xml):
xml
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
crlFile="/path/to/crl.crl"
sslEnabledProtocols="TLSv1.2"
... />
IIS:
打开IIS管理器,选择站点 > SSL设置。
启用“需要SSL”并勾选“启用证书吊销列表检查”。
4. 验证CDP配置
检查证书中的CDP:
bash
openssl x509 -in certificate.crt -text -noout | grep -i "crl"
输出应显示有效的URL(如URI:http://crl.example.com/example.crl)。
测试CRL下载:
bash
wget http://crl.example.com/example.crl
openssl crl -in example.crl -text -noout
浏览器检查:
访问网站,点击地址栏锁图标 > 证书 > 详细信息 > "CRL分发点"。
5. 最佳实践
高可用CDP URL:使用HTTPS、负载均衡或CDN确保CRL可访问。
定期更新CRL:避免CRL过期(CA通常自动处理)。
监控与日志:检测CDP下载失败事件,设置告警。
OCSP装订(补充):减少延迟,将吊销状态直接由服务器提供。
6. 常见问题与解决
CDP URL不可达:
检查网络策略,确保客户端能访问HTTP/HTTPS端口。
使用公共CA的CDP时,避免企业防火墙拦截。
证书验证失败(ERR_CERT_REVOKED):
确认CRL包含该证书序列号。
重新生成CRL并等待客户端同步。
性能问题:
分片大型CRL(如分段CRL),或切换到OCSP。
7. 注意事项
CDP依赖第三方服务:若使用公共CA,确保其CRL服务SLA可靠。
混合环境:部分旧系统可能不支持CDP,需降级处理或兼容配置。
本地CA:若自建CA,需自行托管CRL文件并配置CDP路径。
用户通过以上七点正确配置CDP,可大幅提升SSL证书通信的安全性,确保及时识别失效证书。然后结合自动化工具(如Certbot)和监控系统(如Nagios)持续管理。