适用于:✔️ Linux VM
总结
适用于 Linux 的 Azure VM 实例元数据服务(IMDS)验证工具是一个 bash 脚本,用于诊断与 Linux VM 上的 IMDS 相关的证书链、连接和证书存储问题。 该工具会自动检测 Linux 分发版,并提供特定于发行版的修补程序命令。
该工具的工作原理
该工具运行七个诊断阶段:
| 阶段 | 检查 | 它的作用是什么 |
|---|---|---|
| 1 | IMDS 可访问性 | 测试与169.254.169.254的连接 |
| 2 | 证明获取 | 检索已证明的文档,并从 PKCS#7 信封中提取签名证书 |
| 3 | 链验证 | 使用 openssl verify 根据系统信任存储来验证证书链 |
| 4 | OCSP 检测 | 自动检测 VM 使用的 OCSP 中间层 (02-16) |
| 5 | 商店清单 | 检查 DigiCert 根 G2、Microsoft TLS RSA 根 G2 以及信任存储中的 OCSP 中间证书 |
| 6 | 连接 | 测试与 AIA、CRL 和 OCSP 终结点的 TCP 连接 |
| 7 | 总结 | 检测你的发行版并提供相应的修复命令 |
| 8 | AutoFix (可选) | 指定 --autofix时:下载缺少的证书、安装证书、更新信任存储并重新验证链 |
支持的发行版
| Distribution | 证书路径 | 更新命令 |
|---|---|---|
| Ubuntu/Debian | /usr/local/share/ca-certificates/ |
update-ca-certificates |
| RHEL / CentOS / Oracle Linux / Azure Linux | /etc/pki/ca-trust/source/anchors/ |
update-ca-trust |
| SUSE /openSUSE | /usr/share/pki/trust/anchors/ |
update-ca-certificates |
如何运行该工具
Azure CLI
az vm run-command invoke \
--resource-group <resource-group> \
--name <vm-name> \
--command-id RunShellScript \
--scripts @Linux_IMDSValidation.sh
在本地下载并运行
curl -sL https://raw.githubusercontent.com/Azure/azure-support-scripts/master/RunCommand/Linux/Linux_IMDSValidation/Linux_IMDSValidation.sh | sudo bash
若要自动修复缺少的证书,请添加 --autofix:
curl -sL https://raw.githubusercontent.com/Azure/azure-support-scripts/master/RunCommand/Linux/Linux_IMDSValidation/Linux_IMDSValidation.sh | sudo bash -s -- --autofix
注释
如果没有 --autofix,脚本将仅进行诊断,并且不会对系统进行更改。 借助 --autofix,脚本会下载缺失的中间证书,将其从 DER 转换为 PEM,安装到对应发行版的信任目录,运行信任存储更新命令,然后重新验证证书链。
或者手动下载并运行:
chmod +x Linux_IMDSValidation.sh
sudo ./Linux_IMDSValidation.sh
DER 到 PEM 转换
Important
Microsoft以 DER 格式提供证书。 Linux 信任存储需要 PEM 格式。 该工具的修复命令包括转换步骤。 如果手动安装证书,请始终先转换:
openssl x509 -in certificate.der -inform DER -out certificate.crt