用户在为网站或服务配置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 验证配置,确保算法符合最新安全标准。算法选择需结合业务场景动态调整,在零信任架构下,证书签名算法是构建安全基线的关键一环。