赞片CMSSSL错误
照着这篇文章走完,你能自己定位并修好赞片CMS上那几种最常见的 SSL 报错——后台打不开、前台白屏、图片和播放器转圈、提示「您的连接不是私密连接」——而不是只会重启服务器。
第一步:先分清是哪一类 SSL 错误
这一步的目的是搞清楚「是证书坏了」还是「页面混了 HTTP 资源」,因为两者的修法完全不同,搞错方向会白折腾半天。
打开出问题的页面,按 F12 调出开发者工具,切到 Console(控制台) 面板,看红色的报错行:
net::ERR_CERT_DATE_INVALID、ERR_CERT_COMMON_NAME_INVALID、ERR_CERT_AUTHORITY_INVALID→ 证书本身有问题,走第二步。Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure image/script 'http://...'→ 证书没问题,是页面里混进了 HTTP 资源,走第四步。- 页面能开但跳来跳去在 HTTP 和 HTTPS 之间来回切 → 大概率是后台配置的站点地址还是 http,走第三步。
注意:手机上不报错、电脑上报错,或者反过来,通常是「证书链不完整」,别急着换证书,先看第二步。
第二步:确认证书装全了(宝塔面板为例)
这一步要拿到一个结果:openssl 命令能返回正确的域名和没过期的有效期。
宝塔面板 8.x 的操作路径:网站 → 你的站点 → SSL → 当前证书。粘贴证书时必须是完整证书链,也就是「域名证书 + 中间证书」,不能只贴 domain.crt 那一段。
验证命令(在服务器 SSH 里执行):
openssl s_client -connect 你的域名:443 -servername 你的域名 </dev/null 2>/dev/null | openssl x509 -noout -dates -subject
看两处:notAfter 是否在今天之后,subject 里的 CN 是否等于你的域名。如果返回 verify error:num=21:unable to verify the first certificate,就是链不全。
Nginx 里确认这两行(宝塔会在 /www/server/panel/vhost/nginx/你的域名.conf 生成):
ssl_certificate /www/server/panel/vhost/cert/你的域名/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/你的域名/privkey.pem;
改完执行 nginx -t && nginx -s reload,或直接在宝塔点「重载配置」。
注意:只填域名证书不填中间证书时,Chrome 可能正常,但安卓微信内置浏览器、iOS 旧版本、以及赞片CMS的采集和 APP 接口会直接报 SSL 握手失败。
第三步:强制 HTTPS,并改掉后台里的站点地址
这步做完,前台所有链接都会用 https 生成,不会再出现「跳一下又变回 HTTP」。
先在宝塔:网站 → 设置 → SSL → 打开「强制HTTPS」。
再登录赞片CMS后台,地址用 https://你的域名/admin.php,进 系统 → 基本设置,把「网站地址」改成 https://你的域名(结尾不带斜杠),保存。然后 系统 → 缓存管理 → 清除缓存。
注意:只做强制跳转、不改后台站点地址,模板仍然按 http 拼链接,表现为「SSL 时灵时不灵」。
第四步:清数据库里残留的 http:// 链接
赞片CMS的影片封面、播放地址、采集来源域名大多直接存在数据库里,这是混合内容最主要的来源。
宝塔 → 数据库 → 管理(进 phpMyAdmin),先点「导出」做一次全库备份,再执行 SQL(默认表前缀 zanpian_,按你实际的前缀改):
UPDATE zanpian_vod SET vod_pic = REPLACE(vod_pic, 'http://你的域名', 'https://你的域名');
播放地址字段、文章表、采集来源表同理。不确定有几张表受影响,可以先导出成 .sql,在服务器上数一下:
grep -o 'http://你的域名' 备份.sql | wc -l
第五步:处理模板和 JS 里的硬编码
后台改不到模板源码,得用 SSH 替换。先备份,再查、再改:
cd /www/wwwroot/你的站点目录
cp -r template template_bak
grep -rn "http://你的域名" template/ static/ | head -50
grep -rl "http://你的域名" template/ static/ | xargs sed -i 's#http://你的域名#https://你的域名#g'
注意:赞片CMS部分模板文件是加密的,替换前必须留
template_bak,否则改坏后前台直接白屏。
第六步:CDN 和第三方资源
如果套了 Cloudflare 或阿里云 CDN,CDN 侧也要上传证书,并且回源协议设为 HTTPS。Cloudflare 的 SSL/TLS → 概览 里选「完全(严格)」,不要选「灵活」,否则 CF 到源站仍是 HTTP,会出现 502 或无限重定向。
第三方播放器和采集接口是 http 的,浏览器照样拦。可以在 Nginx 站点配置里加一行,让浏览器自动升级:
add_header Content-Security-Policy "upgrade-insecure-requests";
小结
- 先看 F12 Console,区分「证书错误」和「混合内容」,两者的修法完全不同。
- 证书必须传完整链,Nginx 的
ssl_certificate指向fullchain.pem。 - 强制 HTTPS + 后台「网站地址」改 https + 清缓存,这三步要一起做。
- 数据库字段、模板、JS 里的
http://是混合内容的主因,动之前一律先备份。 - 用了 CDN,回源协议也要是 HTTPS,模式选「完全(严格)」。
原文链接:https://www.gj0.com/thread-893.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。