排错指南
RSA 密钥长度不足:为什么现在才被提醒
证书的 RSA 密钥长度低于 2048 位。
2048 位是 RSA 的现行下限,低于它的证书公开 CA 已经不再签发。你还能看到一张 1024 位的证书,通常意味着它是很多年前签的、私钥一直没换过——续期只换证书不换密钥,长度就会一直带着。
修法只有一个:用新的、更长的密钥重新签发。这件事免费,而且顺手可以换成 ECDSA。
为什么现在才提醒
浏览器对已经签发的旧证书大多仍然接受,不会拦截。所以它不会以故障的形式暴露出来——直到某天某个客户端收紧策略,或者密钥真的被破解。这属于「现在没坏,但不该继续」的一类。
| 密钥 | 状态 |
|---|---|
| RSA 1024 | 已不安全,公开 CA 早已停止签发 |
| RSA 2048 | 当前主流,足够用 |
| RSA 3072 / 4096 | 更保守,握手开销更大 |
| ECDSA P-256 | 安全强度约等于 RSA 3072,密钥和握手都更小 |
重新签发时怎么选
- 没有特殊要求就用 ECDSA P-256:更短的密钥、更快的握手、更小的证书。现代客户端全面支持。
- 需要兼容很老的客户端(十年前的安卓、老 Java)就用 RSA 2048。
- 不建议直接上 RSA 4096:安全收益有限,而每次握手的计算开销明显更高,高并发下能感觉到。
关键是生成新的私钥,不是拿旧私钥重签。密钥长度是私钥的属性,不换私钥,签多少次都还是原来的长度。
openssl ecparam -genkey -name prime256v1 -out privkey.pem # ECDSA P-256
openssl genrsa -out privkey.pem 2048 # RSA 2048常见问题
检测一下你自己的域名
免登录,一次真实的 TLS 握手,直接给出结论:还有多少天到期、证书链是否完整、是否包含这个域名。
需要一张新证书?本站提供基于 Let's Encrypt 的免费签发,支持泛域名。
了解免费证书其他排错指南
- 证书过期了怎么办浏览器拦下访问,提示证书已过期或连接不是私密连接。
- 证书快到期了:先分清是没续期,还是续了没部署证书还没过期,但剩余天数已经不多了。
- 证书还没到生效时间:多半是时钟不对证书的生效时间还没到,被判定为无效。
- 证书透明度日志里出现了没见过的证书监控期间,域名下出现了不是本站签发的新证书。
- 无法连接:证书检测连不上服务器时的排查顺序检测连不上服务器,没能拿到证书。
- 「您的连接不是私密连接」:先找错误代码,再决定修哪里浏览器弹出红色警告拦下访问,但不知道属于哪一种证书问题。
- 关闭 TLS 1.0 / 1.1,只留 1.2 和 1.3服务器还在使用 TLS 1.0 或 1.1 协商连接。
- 证书不包含这个域名:ERR_CERT_COMMON_NAME_INVALID 的几种成因浏览器提示证书不适用于该网站,或者拿到了另一个站点的证书。
- 电脑打得开、手机 App 报证书错误:证书链缺少中间证书电脑浏览器打得开,手机 App、curl 或 Java 客户端却报证书错误。
- OCSP stapling:开了能快一点,不开也不算故障没有启用 OCSP stapling,首次握手会稍慢一些。
- 证书被吊销,或者链验证没通过证书被吊销,或者链验证没有通过。
- 自签名证书:什么时候没问题,什么时候必须换证书是自己签给自己的,浏览器不信任。
- 证书链追溯不到受信任的根:新根交叉签名与私有 CA浏览器打得开,curl、旧安卓或 Java 客户端却说找不到颁发者证书。
- 泛域名证书为什么不覆盖主域名子域名都正常,直接访问主域名却报证书错误。
Last updated on