HTTPS证书过期不用慌,3步解决“不被信任”问题
为什么你的网站突然“不安全”了?
你访问自身站点之际, 浏览器弹出“证书过期”或者“证书不被信任”的红色警告之时, 不要慌张。这从本质上来说是一个时间戳方面的问题, SSL/TLS证书存在固定的有效期, 一般是1年, 一旦过期, 浏览器就会觉得当前连接有中间人攻击的风险, 进而阻断访问。对于站长以及技术爱好者而言, 这是一个常见然而必须迅速解决的“运维小事故”。
第一步:快速诊断问题根源
在动手前,先判断是哪种情况:
就目前查看证书有效期的情况而言, 证书确实已然处于过期状态, 要是出现此种已过期的状况, 那么便直接进行续签或者重新去申请。
证书处于未过期状态, 然而却提示“不被信任”, 一般起因在于, 证书链不是完整的, 再或者服务器没有去正确配置中间证书(CA Bundle)。
此地时间有误, 查证服务器与时客户端二者时间有无齐同, NTP服务未开启, 会致使时间出现偏差。
使用 openssl 命令快速验证:
openssl s_client -connect 你的域名:443 -servername 你的域名
留意输出里头的 verify error 以及证书有效期字段。
第二步:针对不同情况执行修复
1. 证书确实过期——续签或重签
Let’s Encrypt 用户, 当进行 certbot-renew 操作时, 系统将会自动开展检查工作, 并且会进行续签操作。
如若出现“证书不在此服务器上”样的提示, 这时就要运用certbot certonly --standalone -d你的域名来再次申请。
诸如阿里云、腾讯云、DigiCert 这类商业证书: 先登录控制台, 而后在 SSL 证书管理模块那儿点击“续费”或者“重新签发”, 接着下载新证书, 随后运用此新证书去替换掉服务器上的旧文件。
2. 证书链不完整——补全中间证书
很多免费或自签发证书会缺失中间证书。完整的证书链应该是:
服务器证书 → 中间证书 → 根证书
Nginx 配置示例:
server {
listen 443 ssl;
ssl_certificate /path/to/fullchain.pem; # 包含服务器证书+中间证书
ssl_certificate_key /path/to/privkey.pem;
}若仅有单个.crt 文件, 那么需从 CA 官网下载中间证书, 接着使用文本编辑器将其合并到 fullchain.pem 里, 且合并时分服务器证书在上、中间证书在下的顺序来进行。
3. 本地时间问题——同步NTP
在服务器上执行:
sudo ntpdate ntp.aliyun.com sudo systemctl restart ntp
好比你所用的Windows或者Mac这类客户端, 同样得仔细查看时间同步的相关设置。
第三步:验证并监控
加以修复之后, 运用 SSL Labs 在线测试去确认证书链以及信任级别, 对于 Let’s Encrypt 证书推荐配置 Cron 任务来进行自动续签。
0 0 * /usr/bin/certbot renew --quiet && systemctl reload nginx
总结
证书过期这件事看似不算大事, 然而要是处理得不合适, 就会致使出现用户流失以及 SEO 参数被减损的情况对用户信息带来不利影响等等。其关键的重要点在于, 要做到定期进行续签行动, 要维持完整的证书链条, 要保证时间处于同步状态。
否玩代码编辑 https://www.fouwan.com


