前言

什么是CA根证书,这篇文章讲的很详细

CA证书详解

CA根证书一般都会预装在我们的系统中,构建信任体系的基础

但如果有第三方有风险的CA根证书被添加至计算机的根证书受信列表之中,那么整个整个信任体系则可能随时会崩塌

一切基于PKI体系的证书信任就会变成一个笑话,最经典的攻击则是“中间人攻击”

看似加密传输,实则在攻击者的监控下已是和明文传输没什么两样

这里就不得不提一下CNNIC证书事件了(反复鞭尸),有兴趣的朋友可以自行去搜索

并且在国内很多流氓软件都会将自己的根证书在未经用户允许的情况下安装进用户计算机中

而这些流氓软件背后的团队很多都是没有维护CA根证书的资质,一旦根证书密钥泄露,用户将面临巨大的安全风险

tips:本教程将着重讲述Windows系统下的方法

Windows

我们这里采用微软提供的证书检查工具Sigcheck

tips:使用此工具就意味着你需要信任微软,但话说回来如果你不信任微软,我觉得也就没必要使用Windows了😂

Sigcheck

下载完工具后运行

1
sigcheck.exe -tuv
1
sigcheck.exe -tv

tips:没有定位到程序当前文件夹下的命令行请补全程序路径

-tuv检查用户证书,-tv检查计算机证书

运行完毕就会在窗口里打印出与Microsoft受信任证书的列表不符的证书

注:有些证书来自于系统某些功能产生的自签根证书,请仔细辨别,删除该证书可能会导致不可预知的问题

确认要删除的证书后运行certlm.msc(管理计算机根证书)和certmgr.msc(管理用户根证书)

找到风险证书然后删除即可

目前在我计算机上发现的有几个加速器的自签根证书以及自己的自签根证书

Linux

Linux版本众多,我仅在我的机器上做实验,所以不同发行版可能有出入

本次教程使用的Linux发行版为Debian 5.10.120-1 (2022-06-09) x86_64 GNU/Linux

Linux使用的检查工具不同,我使用的是ctlcheck

  • 比较当前系统 CA 与 CCADB(或 Apple 等)的最新数据之间的差异
  • 显示供应商已删除的证书(Mozilla、Apple、Microsoft 等)和未知证书
  • 可以将自签名证书或公司根证书添加到允许列表

截止于写稿前,该程序作者尚未编译二进制程序,所以需要自行下载编译

此程序采用go编写,如果未安装GO请自行去官网安装GO

tips:最好从官网安装最新版的go,apt仓库内的1.15版本golang在编译时会出现缺少依赖库的问题

从github上clone项目(没装git就直接下载zip吧)

1
git clone https://github.com/canstand/ctlcheck

clone完成进入项目文件夹,编译项目

1
go build main.go

等待编译完成… …

编译完成后给编译出来的main文件赋予可执行权限

1
chmod +x main

运行main程序

1
./main

等待几秒后即可完成检查

我们需要重点关注未过期的Removal和Unknown的证书

删除证书

1
sudo dpkg-reconfigure ca-certificates

在显示的GUI界面中取消选择有风险的证书(空格选择,enter保存并退出)

完成后再执行一次检查查看是否生效

后记

Android目前还未进行实验,不过我也觉得没必要了,装在手机上的国内流氓软件(包括但不限于N#9P:e4"kn)早就已经嗯。。。

所以重要私密资料请脱机保存,读取时请尽量使用没有任何“tag”的设备进行读取

iOS不用担心,你只需要信任Apple就行,如果你不信任Apple,那也没必要用iPhone了

macOS我还未进行测试,如果ctlcheck在macOS平台编译后也能使用,则教程跟着上方Linux来就行

唯一不同的是证书好像是在钥匙串里