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** 进行的小额捐赠将不胜感激 —— 这有助于资助持续的开发和维护。
[](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, 域名收集, 控制台应用, 网络安全, 自动化运维, 自签名证书, 证书生命周期管理, 防火墙管理, 隐私保护