第2章 cmd命令基础:证书操作(certutil)
Hi~ 我是李小咖,主要从事网络安全技术开发和研究。
本文取自《李小咖·网安技术库》,欢迎一起交流学习🫡:https://imbyter.com
Certutil是一个Windows操作系统自带的命令行工具,主要用于执行各种与数字证书相关的任务,同时也可以校验文件MD5,SHA1,SHA256,下载文件等。
在cmd中执行certutil命令,其实执行的是C:\Windows\system32\certutil.exe
程序。
一、证书操作
1. 查看证书
certutil可以用来查看数字证书的详细信息。例如,要查看某个证书的详细信息,可以执行以下命令:
# certutil -dump <证书文件名>
E:\>certutil -dump test.cert
该命令将输出证书的详细信息,包括证书序列号、颁发机构、公钥、签名、有效期等:
2. 安装证书
Certutil可以用来安装数字证书。例如,要将某个证书安装到本地证书存储区,可以执行以下命令:
# certutil -addstore <存储区名> <证书文件名>
E:\>certutil -addstore MY test.cert
其中,存储区名可以是以下之一:
-
MY:个人证书存储区
-
CA:中央证书存储区
-
ROOT:根证书存储区
3. 导出证书
Certutil可以用来导出数字证书。例如,要将某个证书导出为PEM格式,可以执行以下命令:
# certutil -encode <证书文件名> <输出文件名>
E:\>certutil -encode test.cert test.pem
该命令将把证书导出为PEM格式,并保存到指定的输出文件中。
4. 检查证书链
Certutil可以用来检查数字证书的证书链。例如,要检查某个证书的证书链是否完整,可以执行以下命令:
# certutil -verify <证书文件名>
E:\>certutil -verify test.cert
如果证书链完整,该命令将输出“证书链完整”;否则,将输出有关证书链不完整的信息。
5. 列出证书
Certutil可以用来列出数字证书。例如,要列出个人证书存储区中的所有证书,可以执行以下命令:
# certutil -store MY
E:\>certutil -store MY
该命令将列出个人证书存储区中的所有证书,并显示每个证书的序列号、主题、颁发机构等信息。
二、编码解码
1. Base64编码解码
Certutil可以将指定文件的内容进行Base64编码,结果保存到新文件中。
# certutil -encode 目标文件 编码后的新文件
E:\>certutil -encode 123.txt encode.txt
执行效果:
被编码的文件内容,会以-----BEGIN CERTIFICATE-----
开头,-----END CERTIFICATE-----
结尾。
解码,使用 -decode 参数,即可实现对编码后的文件解码:
# certutil -decode 已经编码的文件 解码后的新文件
E:\>certutil -decode encode.txt 123.txt
2. 十六进制编码
Certutil可以将指定文件的内容进行十六进制编码,结果保存到新文件中。
# certutil -encodehex 目标文件 编码后的新文件
E:\>certutil -encodehex 123.txt hex.txt
执行效果:
被编码的文件内容,如下格式保存:
解码,使用 -decodehex 参数,即可实现对编码后的文件解码:
# certutil -decodehex 已经编码的文件 解码后的新文件
E:\>certutil -decodehex 123.txt hex.txt
三、计算散列值
Certutil可以对指定文件进行散列值的计算,支持的算法有MD5,SHA1,SHA256。
1. MD5
# certutil -hashfile 目标文件 哈希算法
E:\>certutil -hashfile test.txt md5
执行效果:
1. SHA1
# certutil -hashfile 目标文件 哈希算法
E:\>certutil -hashfile test.txt SHA1
执行效果:
2. SHA256
# certutil -hashfile 目标文件 哈希算法
E:\>certutil -hashfile test.txt SHA256
执行效果:
四、文件下载
Certutil命令还支持从远程web服务器中下载文件和资源。
格式:certutil -urlcache -split -f 网络资源 保存路径
。
-
网络资源
是您要下载的文件的URL; -
保存路径
是您要将该文件保存到计算机上的位置。
E:\>certutil.exe -urlcache -split -f https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png E:\1.png
注意:
此命令将从指定的URL下载文件并将其保存到指定的位置。如果在指定位置已经存在具有相同名称的文件,则该文件将被覆盖。
执行效果:
五、缓存操作
对于使用Certutil下载文件,以及其他内部调用WinHTTP API
或WinInet API
的网络软件工具,在下载文件的时候,都会留下一些缓存数据,可以用Certutil查看这些数据。
1. 查看所有缓存
命令:certutil.exe -urlcache
E:\>certutil.exe -urlcache
执行效果:
2. 查看指定下载缓存
如果要查看指定文件的下载缓存,可以用certutil.exe -urlcache -v 下载过的文件
命令,比如查看上述下载图片的缓存:
E:\>certutil.exe -urlcache -v https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png
执行结果:
3. 清除缓存
清除指定下载的缓存文件,可以执行:certutil.exe -urlcache 下载过的文件 delete
E:\>certutil.exe -urlcache https://img.js.design/assets/stableDiffusion/thumbnail/diffusionImage/641017156a21b6a39f0aa61e.png delete
清除所有文件缓存:
E:\>certutil.exe -urlcache * delete
六、获取错误代码
可以用Certutil来查询在编程开发,或者系统弹框的一些错误的解释。
格式:certutil -error 错误码
E:\>certutil -error 5E:\>certutil -error 0x0000007bE:\>certutil -error 0x8007000e