[Keystore] 命名密钥与证书
本节用于声明按名称引用的 SSH 私钥与 PKCS#12(P12)证书凭据材料。Proxy 的 private-key 和 MITM 的 ca-keystore-name 使用这些名称获取凭据。
语法声明块
条目通过标准的 INI 配置行进行声明:
ini
[Keystore]
name = kind, base64=<SECRET>, [options...]各组成部分解析如下:
name:凭据的唯一命名标识,供[Proxy]或[MITM]引用。kind:凭据用途类型(位置参数,必填),可选private-ssh-key(或openssh-private-key)、p12。base64:Base64 编码的密钥或证书归档材料内容。[options...]:可选键值参数(如password)。
字段详解
name(非空字符串,必填) 凭据的唯一引用名称。不包含空字符(NUL),UTF-8 编码长度最多 255 字节。kind(枚举值,必填) 凭据用途类型(第一个位置参数):base64(Base64 编码字符串,必填) 编码后的完整私钥文件或 PKCS#12 归档文件数据。配置解析时校验 Base64 解码有效性。password(字符串,未设置) 解锁受保护 SSH 私钥或 PKCS#12 归档所需的解密密码。若密码包含逗号或等号等特殊字符,需使用双引号整体包裹。
配置约束与合并规则
- 名称唯一:同一配置层内禁止声明同名条目。
- 引用范围:仅支持 Proxy 的
private-key与 MITM 的ca-keystore-name按名称引用,不执行全局变量或文本替换。 - 插件覆盖:插件中声明同名条目时,按名称整体覆盖基础配置中的条目,材料与选项不执行逐字段合并。支持在章节首行声明
%INSERT%或%APPEND%。
基于 Keychain 的凭据
在 Apple 平台中,敏感凭据可通过应用管理界面导入至系统 Keychain,由系统加密保护并持久化存储:
- 系统安全加密存储:私钥与证书归档材料由系统 Keychain 加密保护,避免在配置文件中以明文或 Base64 形式暴露敏感密钥信息。
- 命名引用:导入 Keychain 的条目以其设置的名称作为标识,Proxy 的
private-key与 MITM 的ca-keystore-name可直接通过该name进行引用,无需在[Keystore]配置节中声明材料。 - 解析优先级高于配置:解析命名凭据时,系统优先从 Keychain 安全存储中按名称查询;仅在 Keychain 中不存在该条目时,才会回退读取当前配置文件
[Keystore]节中的同名条目。 - 失败不回退:若 Keychain 中已存在同名条目,但发生凭据损坏、用途不匹配(如将 SSH 私钥用于 MITM)或校验失败,系统直接返回错误,不会降级回退至
[Keystore]节。
配置示例
1. 配置内声明凭据
ini
[Keystore]
# SSH 私钥材料(无密码保护)
ssh-key = private-ssh-key, base64=<SECRET>
# P12 证书与私钥归档(带密码保护)
ca-cert = p12, base64=<SECRET>, password="<SECRET>"
[Proxy]
# SSH 出站引用命名私钥
SSH = ssh, proxy.example.com, 22, username=user, private-key=ssh-key
[MITM]
# HTTPS 解密引用命名 CA 证书
ca-keystore-name = ca-cert2. 引用 Keychain 凭据
若已通过系统应用界面向 Keychain 导入名为 my-ssh-key 和 my-ca-cert 的凭据,配置中无需声明 [Keystore] 节,直接按名称引用即可(即便存在同名 [Keystore] 条目,也优先使用 Keychain 中的凭据):
ini
[Proxy]
SSH = ssh, proxy.example.com, 22, username=user, private-key=my-ssh-key
[MITM]
ca-keystore-name = my-ca-cert