alex-milla/PanOS-Certificate-Manager

GitHub: alex-milla/PanOS-Certificate-Manager

一款基于 PowerShell 的控制台工具,通过 XML API 管理 Palo Alto 防火墙上的 SSL/TLS 证书,支持证书全生命周期操作和多设备管理。

Stars: 0 | Forks: 0

# PAN-OS 证书管理器 v1.0 Beta ## 概述 **PAN-OS Certificate Manager** 是一个 PowerShell 脚本,提供了一个基于控制台的交互式仪表板,用于通过 XML API 管理 Palo Alto Networks 防火墙上的 SSL/TLS 证书 —— 无需访问 GUI。 ### 功能特性 - 📋 **仪表板** —— 查看所有证书及其过期状态(有效 / 即将过期 / 已过期) - ✅ **验证** —— 列出并检查证书的详细属性 - 📥 **导入** —— 从本地 `.pem`、`.pfx` 或 `.p12` 文件上传证书 - 📤 **导出** —— 从防火墙下载证书到本地文件 - 🗑️ **删除** —— 从配置中移除证书 - 🔐 **生成** —— 创建新的自签名 CA 证书或由本地 CA 签名的证书 - 🔄 **续订** —— 重新生成现有证书,用外部文件替换,或通过 SCEP 重新注册 - 🔑 **多设备** —— 管理多个防火墙,每个都有自己存储的 API Key - 💾 **持久化配置** —— 设备列表本地保存在 `~/.panoscertmgr/devices.xml` ## 系统要求 - **PowerShell 5.1** 或更高版本(Windows PowerShell 或 PowerShell 7+) - 防火墙管理界面的网络访问权限(HTTPS,端口 443) - 具有足够权限的 PAN-OS API Key(见下文) ## 测试环境 | 设备 | PAN-OS | |--------|--------| | PA Series 5200 | 11.1.x | ## 生成 PAN-OS API Key 您需要一个 API Key 来针对每个防火墙对脚本进行身份验证。 ### 选项 A —— 从脚本本身生成 添加设备时,选择 **“Generate API Key with username and password”**。脚本将联系防火墙并自动检索密钥。 ### 选项 B —— 通过浏览器或 curl 手动生成 **浏览器:** ``` https:///api/?type=keygen&user=&password= ``` **curl:** ``` curl -k "https:///api/?type=keygen&user=&password=" ``` 响应将包含您的密钥: ``` LUFRPT1abc123...== ``` ### 所需 API 权限 在 `Device → Admin Roles → Add` 下创建一个专用的 **Admin Role Profile**(例如 `api-certmanager`),具有以下 **XML API** 权限: | XML API 权限 | 值 | |---|---| | Report | ✅ 启用 | | Log | ✅ 启用 | | Configuration | ✅ 启用 | | Operational Requests | ✅ 启用 | | Commit | ✅ 启用 | | Export | ✅ 启用 | | Import | ✅ 启用 | | User-ID Agent | ❌ 禁用 | | IoT Agent | ❌ 禁用 | 然后创建一个分配给该角色配置文件的管理员帐户(`Device → Administrators → Add`),并使用这些凭据生成 API Key。 ## 使用方法 ``` # 直接运行 .\PanOS-CertManager-v1.0-beta.ps1 # 如果执行策略阻止 powershell -ExecutionPolicy Bypass -File .\PanOS-CertManager-v1.0-beta.ps1 ``` ### 首次运行 1. 从主菜单中选择 **[2] Add device** 2. 输入描述性名称、防火墙 IP/主机名和 PAN-OS 版本 3. 使用用户名/密码进行身份验证或粘贴现有的 API Key 4. 设备已保存 —— 随时可以从 **[5] Manage certificates** 中选择它 ## 配置与安全 ### 配置文件位置 设备列表存储在 **与脚本相同的文件夹中**: ``` .\devices.xml ``` ### API Key 加密 API Key **绝不会以明文形式存储**。脚本通过 PowerShell 的 `ConvertFrom-SecureString` 使用 Windows **Data Protection API (DPAPI)** 在保存前加密每个密钥: | 属性 | 详情 | |---|---| | 加密方式 | Windows DPAPI(底层使用 AES-256) | | 绑定对象 | 当前 Windows 用户帐户 + 机器 | | 可移植性? | 否 —— 密钥无法在不同的 PC 或用户会话中解密 | | 恢复方式 | 重新添加设备并重新输入 API Key | 这意味着即使有人复制了您的 `devices.xml` 文件,如果没有您的 Windows 会话,其中的 API Key 也是无法读取的。 ## 已知限制 (Beta) - 并非所有 PAN-OS 版本都通过 API 支持 `` 参数用于证书有效期。脚本会检测到此情况并自动在不使用该参数的情况下重试。 - 对于未在 XML 响应中填充这些字段的旧证书,证书属性(Subject、Issuer、Algorithm)可能显示为 `N/A`。 - SCEP 续订要求防火墙上已配置 SCEP 配置文件。 - 使用私钥导出要求证书在导入时带有其密钥对。 ## 许可证 ### 发行与修改 此脚本是 **免费使用、分发和修改的**,前提是: - 在任何重新分发或修改的版本中注明原作者 - 在脚本头部保留作者行(`Author: Alex Milla - alexmilla.dev`) ### 使用 | 使用案例 | 费用 | |---|---| | 个人使用 | ✅ 免费 | | 员工少于 50 人的组织 | ✅ 免费 | | 员工不少于 50 人的组织 | ☕ [赞赏小额捐赠](https://buymeacoffee.com/alexmilla) | 如果您的组织拥有 **50 名或更多员工** 并发现此工具有用,通过 **Buy Me a Coffee** 进行的小额捐赠将不胜感激 —— 这有助于资助持续的开发和维护。 [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-support-yellow?style=for-the-badge&logo=buy-me-a-coffee)](https://buymeacoffee.com/alexmilla) ## 作者 **Alex Milla** — [alexmilla.dev](https://alexmilla.dev)
标签:AI合规, IPv6, Libemu, Palo Alto Networks, PAN-OS, PE 加载器, PowerShell, SCEP, SSL/TLS证书, StruQ, XML API, 域名收集, 控制台应用, 网络安全, 自动化运维, 自签名证书, 证书生命周期管理, 防火墙管理, 隐私保护