用户在为网站或服务配置HTTPS时,遇到了证书签名的选项。他们应该需要知道不同算法的优缺点和适用场景,而不是单纯的技术定义。考虑到现在主流环境,重点应该放在推荐SHA-256和SHA-3这些现代算法上。选择合适的 SSL 证书签名算法至关重要,它直接关系到证书的安全性、兼容性和性能。下面对主要算法的分析及选择的几点建议:
主流签名算法及演进
1. SHA-1 (已淘汰 ❌)
问题:2005年已被证实存在碰撞漏洞,2017年起被所有主流浏览器禁用。
绝对禁止使用,仅存在于历史旧证书中。
2. SHA-256 (当前标准 ✅)
RSA-SHA256:目前最广泛支持的算法(>99.9%设备兼容),2048位密钥为基准,3072/4096位更安全。
ECDSA-SHA256:基于椭圆曲线密码学,同等安全下密钥更短(如256位= RSA 3072位),性能更高,适合移动端和高并发场景。
推荐作为默认选择。
3. SHA-384 / SHA-512
安全性更高(抗量子计算略强),但性能开销增大(尤其低端设备)。
适用场景:金融、政府等高安全需求领域,或合规性强制要求时。
4. SHA-3 (未来趋势 🔮)
新一代安全哈希标准(Keccak算法),设计上抵御现有所有已知攻击。
兼容性仍在提升中(较新OS/浏览器支持),暂未大规模普及。
核心选择建议
1. 优先选择 ECDSA 证书
优势:更快的握手速度(TLS性能提升15%-20%)、更低的计算资源消耗。
要求:服务器必须支持 ECDSA 密钥(如Nginx/OpenSSL配置)。
2. RSA 证书仍是安全备选
当旧客户端兼容性为关键因素时(如支持Win XP/旧安卓),RSA 2048+ SHA-256 是稳妥方案。
3.双证书策略(最佳实践)
同时部署 RSA 和 ECDSA 证书:服务器根据客户端能力自动选择最优证书(如Nginx的ssl_ecdh_curve配置)。
效果:现代设备获得ECDSA性能优势,老旧设备回退到RSA保障兼容性。
密钥长度搭配建议
算法类型
安全等级
推荐密钥长度
RSA
商业级安全
2048位
高敏感数据/长期
3072或4096位
ECDSA
等效RSA 2048
secp256r1曲线
更高安全性
secp384r1曲线
实践注意事项
1. CA支持度
主流CA(Let's Encrypt, DigiCert, Sectigo等)均支持 SHA-256 和 ECDSA 证书签发。
2. 服务端配置
nginx
复制
下载
Nginx 示例:优先ECDSA,兼容RSA
ssl_certificate /path/to/ecdsa.crt;
ssl_certificate_key /path/to/ecdsa.key;
ssl_certificate /path/to/rsa.crt;
ssl_certificate_key /path/to/rsa.key;
3. 客户端兼容性
ECDSA 限制:Android 4.x以下、Windows XP/Vista 原生不支持(需额外补丁)。
4. 证书链完整性
确保证书链中所有中间证书使用相同算法(如SHA-256),避免浏览器警告。
决策流程图
新部署证书
需支持旧设备?
选择 RSA-SHA256
服务器支持 ECDSA?
优先 ECDSA-SHA256
RSA-SHA256
建议增加RSA证书双部署
密钥长度≥2048位
标准场景:ECDSA-SHA256 + RSA-SHA256 双证书(最优平衡安全与兼容性)。
强制兼容旧系统:单独使用 RSA-SHA256(2048位以上)。
高安全需求:考虑 SHA-384 或未来迁移至 SHA-3。
绝对避免:SHA-1、MD5 及 RSA 密钥 <2048 位。
因此定期使用 SSL Labs Test 验证配置,确保算法符合最新安全标准。算法选择需结合业务场景动态调整,在零信任架构下,证书签名算法是构建安全基线的关键一环。