做网站的时候,很多人会忽略一个细节:SSL证书是不是真的生效了?尤其当你刚配好HTTPS,浏览器地址栏却还显示‘不安全’,这时候就得查证书状态。别急着重装服务器,先学会怎么查证书。
\n\n为什么需要证书查询
\n比如你刚在阿里云买了个证书,上传到Nginx配置完,刷新网页却发现小绿锁没出现。可能是证书没生效、过期了,或者域名对不上。这时候打开浏览器开发者工具看也看不出啥名堂,得用专业方式查。
\n\n浏览器直接查看证书
\n最简单的办法是点地址栏的小锁图标。以Chrome为例,点击左侧锁形标志,选择‘证书’,就能看到颁发机构、有效期、绑定的域名等信息。如果发现有效期只剩三天,那赶紧续费,不然用户访问时会被警告。
\n\n命令行工具:openssl 查证书
\n如果你有服务器权限,用 openssl 命令最直接。比如想查 example.com 的证书信息,可以运行:
\necho | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates -subject\n\n这条命令会返回证书的生效时间、过期时间和绑定的主体域名。如果返回的是“notAfter=Jan 1 12:00:00 2024 GMT”,说明明年一月就到期,得提前处理。
\n\n检查证书链是否完整
\n有时候证书本身没问题,但中间证书没装全,手机或老系统打不开。可以用下面这行命令看完整链:
\nopenssl s_client -connect example.com:443 -showcerts\n\n输出里能看到多个 CERTIFICATE 块。如果只有一块,很可能中间证书缺失,去你的证书提供商下载完整的 chain 文件补上就行。
\n\n在线工具快速检测
\n不想敲命令也没关系,网上有不少免费工具。像 SSL Labs 的 SSL Test(ssllabs.com/ssltest)输入域名就能扫一遍。它会告诉你证书状态、协议支持、加密强度,甚至模拟不同设备访问效果。适合新手快速定位问题。
\n\n自动化监控证书到期
\n手动查太麻烦,尤其是管多个网站的。可以用脚本定期检查。比如写个简单的 Shell 脚本:
\n#!/bin/bash\nDOMAIN=\"example.com\"\nEXPIRE_DATE=$(echo | openssl s_client -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)\nDAYS_LEFT=$(echo \\"($EXPIRE_DATE - now) / 86400\\" | bc)\nif [ $DAYS_LEFT -lt 15 ]; then\n echo \"警告:$DOMAIN 证书将在 $DAYS_LEFT 天后到期!\"\nfi\n\n配上 cron 每周跑一次,快到期了发邮件提醒,省心得多。
\n\n常见问题场景
\n有个客户反馈后台登录页打不开,提示证书错误。一查发现是他用自己的域名搭了个测试站,用了自签名证书。这种证书浏览器不认,普通用户访问必然报警。解决办法要么换成可信CA签发的,要么让内部人员手动信任根证书。
\n\n还有一种情况是泛域名证书(通配符证书)只覆盖一级子域。比如 *.example.com 不包含 a.b.example.com。如果在这上面部署服务,证书就会报错,得重新申请或多级通配。
\n\n证书查询不是一次性任务。每次更新、迁移、加子域都得再确认一遍。养成习惯,能避免很多线上事故。
","seo_title":"网站SSL证书查询方法大全,在线+命令行+自动化检测","seo_description":"手把手教你如何进行证书查询,通过浏览器、OpenSSL命令和在线工具检查SSL证书状态,避免网站安全警告。","keywords":"证书查询,SSL证书查询,查看网站证书,openssl 查证书,SSL证书过期检查"}