Windows Server 2008 CloudWatch Agent 证书验证失败
Windows Server 2008 CloudWatch Agent 证书验证失败
在一台 Windows Server 2008 EC2 实例上,CloudWatch Agent 服务状态正常,但监控指标一直无法上报到 CloudWatch。日志里反复出现 x509: certificate signed by unknown authority,最后定位到旧系统根证书和 TLS 支持不足。
现象
CloudWatch Agent 日志中持续出现类似错误:
WriteToCloudWatch failure, err: RequestError: send request failed
caused by: Post https://monitoring.<region>.amazonaws.com.cn/:
x509: certificate signed by unknown authority同时需要注意两个容易误判的点:
ping monitoring.<region>.amazonaws.com.cn不通不一定代表服务不可达,Interface Endpoint 通常不响应 ICMP。- 浏览器打开 CloudWatch API endpoint 返回
404 Not Found也是正常现象,它不是普通网页服务。
根因
Windows Server 2008 的根证书库太旧,可能缺少验证 AWS 服务端证书所需的根证书,例如 Amazon Root CA 1。纯内网实例如果无法访问公网,也不能自动拉取新的受信任根证书。
此外,旧版 Windows Server 2008 还可能缺少支持现代 TLS 链路的补丁。最终表现就是 CloudWatch Agent 建立 HTTPS 连接时无法完成证书链验证。
处理步骤
1. 安装 SHA-2 / TLS 相关补丁
先安装 Windows Server 2008 所需的安全补丁,例如 KB4474419。补丁安装后必须重启系统。
wusa.exe C:\Patches\windows6.1-kb4474419-v3-x64.msu /quiet /norestart
shutdown /r /t 02. 导入 Amazon Root CA 1
下载 Amazon Root CA 1 证书:
https://www.amazontrust.com/repository/AmazonRootCA1.cer在内网环境中,可以先从可访问公网的机器下载,再通过安全方式拷贝到实例。
导入到受信任根证书存储:
certutil -addstore -f Root C:\Patches\AmazonRootCA1.cer也可以通过 certmgr.msc 图形界面导入到“受信任的根证书颁发机构”。
3. 重启 CloudWatch Agent
net stop "Amazon CloudWatch Agent"
net start "Amazon CloudWatch Agent"验证
检查 Agent 日志,确认不再出现 x509: certificate signed by unknown authority。
也可以测试 TCP 443 连通性:
(New-Object System.Net.Sockets.TcpClient).Connect("monitoring.<region>.amazonaws.com.cn", 443)如果命令无报错,说明 TCP 层连通。最终以 CloudWatch 控制台中指标正常上报为准。
总结
旧版 Windows Server 2008 在纯内网环境里运行 CloudWatch Agent 时,常见问题不是 VPC Endpoint,而是系统根证书和 TLS 能力太旧。处理顺序建议是:
- 确认 CloudWatch endpoint TCP 443 可达。
- 安装必要系统补丁。
- 手动导入 Amazon Root CA 1。
- 重启 CloudWatch Agent 并观察日志。
这类旧系统应尽量纳入迁移计划,长期运行会不断遇到证书、TLS、补丁和软件兼容问题。
