![自动提取证书信息](https://linux22.com/image/662301/%E8%87%AA%E5%8A%A8%E6%8F%90%E5%8F%96%E8%AF%81%E4%B9%A6%E4%BF%A1%E6%81%AF.png)
在我目前的设置中,我有 16 台生产服务器,另外还有 16 到 20 台开发和 QA 服务器。我还在其中存放了大量证书。我们正在尝试清点所有内容,以便我们不会错过任何证书过期警报(我们在生产中遇到过这种情况,这对业务产生了很大影响)。
我可以进入 MMC 并右键单击每个节点并导出列表,但对于 40 多台机器来说,这太耗时了。有没有办法自动完成这个?有什么脚本或工具可以做到这一点?
谢谢,
房车
答案1
这个问题可能会被转移到另一个 StackExchange 网站,但是我仍然会提供答案。
一点点 PowerShell 魔法应该可以让这一切变得相当简单。PowerShell 可以像浏览任何其他驱动器一样浏览证书存储(就像浏览文件系统一样)。
列表全部系统上的证书:
Get-ChildItem -Path Cert:\ -Recurse
如果您只想以当前用户身份安装证书,只需更改“目录”:
Get-ChildItem -Path Cert:\CurrentUser -Recurse
(请注意,上述命令返回“文件夹”名称,后跟所有包含的证书,这取决于您正在执行的操作,可能会变得混乱。)
我从您的问题中假设您真正担心的只是 SSL 服务器身份验证证书,因此您可以专门获取这些证书(并限制输出仅显示证书的主题、路径和到期日期):
Get-ChildItem -Path Cert:\ -Recurse -SSLServerAuthentication | Select Subject, PSParentPath, NotAfter
然后,您可以查看将列表导出到 CSV 文件(或数据库或您想要使用的任何其他方法)的内容,然后从一个中央工作站在远程服务器上运行它们并在本地收集所有信息。