想要查看域名的SSL证书信息, 主要的方法一共有三个方向, 第一个方向是借助浏览器自身内置的功能来查看, 第二个方向是通过命令行输入openssl命令来查询, 第三个方向则是使用在线的证书检测工具来进行检查, 下面咱们就以gname.xin这个域名作为具体的例子, 分步骤详细说明以上每一种方法具体应该怎么去操作, 以及拿到结果之后应该如何进行解读。

通过浏览器直接查看(最快捷)

以Chrome作为例子的时候, 你去访问那个目标域名, 比如说gname.xin这个地址, 然后你点击一下地址栏左边的那个像小锁一样的图标, 接着在里面选择显示“证书有效”或者“查看证书”, 这时候弹出来的窗口里, 就会看到上面写着颁发给了谁(Subject), 是谁发的证书(Issuer), 什么时候开始有效到什么时候结束(Valid from / to), 还有序列号以及用了什么样的数字签名算法这些东西。

Firefox 的操作路径跟之前的办法差不多, 点那个锁图标, 然后选那个“更多信息”, 往下滑找到“安全性”这个入口, 再点“查看证书”, 这一套走完就能看到结果, 用这个方法挺快就能知道证书有没有过期的问题, 还能看清楚是不是那个被大家信任的大机构给它发的。

通过命令行精确查询(适合运维)

打开终端之后, 进行执行的这一步操作。

使用openssl的s_client选项, 并搭配connect参数来连接gname点xin冒号443, 把二通过管道符传递给openssl的x509模块, 然后用-noout参数关闭输出额外信息, 再配合-subject参数显示主题, -issuer参数显示颁发者, -dates参数显示日期, 以及-serial参数显示序列号。

其中, subject这个字段代表的是证书所绑定的那个域名, issuer这个字段表示的是颁发证书的CA机构的名字, notBefore以及notAfter这两个字段分别对应有效期的起始时间和结束时间, serial则代表该证书的独一无二的编号。

如果想要查看完整的证书链的话, 就需要把-noout这个参数给去掉, 这样就会输出PEM格式的整个内容。这种方法是可以在后台进行脚本化处理的, 因此特别适合用来对一大堆不同的域名安排定期的检查和维护工作。

通过在线工具辅助诊断

你要是在搜索引擎里输入那个"SSL certificate checker”, 然后选择一个支持链式检测的工具, 再输入gname.xin以及端口443, 这个工具就会返回证书的完整性检查结果, 还有中间证书是不是缺失了, OCSP或者CRL的吊销状态等等。这种方法是适合非技术人员用来做初步排查的。

关键信息逐项解读

域名证书信息怎么看?三步查清SSL证书状态与有效期(图1)

当查看证书的时候, 应该特别去关注下面这些字段的方面:

颁发者(Issuer): 应该是由知名的CA机构颁发的, 比如Let's Encrypt、DigiCert、GlobalSign这些。如果用的是自签名证书的话, 那么浏览器就会提示不安全。

有效期: 现在大家常用的那些证书颁发机构, 他们签发的证书最长只能是90天, 比如Let's Encrypt。还有的是398天, 像是DigiCert这种。如果时间超过了规定的那个范围, 那就不符合CA与浏览器论坛制定的基线要求了。

域名匹配(SAN字段): 需要去确认证书里面是包含当前访问的域名。如果是通配符证书, 还需要去检查它是不是把相关子域名都覆盖到了。

吊销状态: 可以通过CRL接口或者OCSP接口进行确认, 从而确保证书没有被提前吊销。

高频问题与处理

现象 可能原因 处理方式
浏览器提示"证书不受信任" 中间证书缺失或CA未被操作系统信任 补全证书链,安装根证书
证书已过期仍显示旧日期 服务器缓存未更新 重启Web服务并重新部署新证书
仅主域名正常、子域名报错 证书SAN中未包含该子域名 申请包含目标子域名的新证书

注意事项

我们建议企业要为证书到期建立提醒机制, 这个机制最好能提前三十天发出预警信号。这么做是为了避免出现这样的情况, 就是比如gname.xin这些关键业务域名因为证书过期了, 而导致HTTPS中断。除此之外, 所有的证书变更记录都应该留存日志, 这样才好确保可以追溯。