如何在 Proxyman 中生成并使用自定义根证书?
本文将指导你如何手动生成符合 Apple 新安全要求(iOS 13+ 和 Catalina)的自签名证书,然后将其用作自定义根证书。
1. Apple 有哪些新的安全要求?
从 iOS 13 和 macOS 10.15(Catalina)开始,所有证书都必须符合 Apple 新的安全要求,才能正常工作。
总结如下:
- RSA 密钥的长度必须大于 2048 位
- 哈希算法必须属于 SHA-2 系列
- 使用 SHA-1 签名的证书不再被 TLS 信任。
- 服务器的 DNS 名称必须出现在 Subject Alternative Name(SAN)中,不再信任 Common Name(CN)
- 证书必须有效(当前日期位于 Not Before 与 Not After 之间)
- 有效期不超过 825 天
- TLS 服务器证书必须包含 ExtendedKeyUsage(EKU)扩展,且其中包含 id-kp-serverAuth OID。
更多信息请参阅:https://support.apple.com/en-us/HT210176
2. 如何生成自签名证书?
1/ 在桌面文件夹中准备 cert.config 文件
[ ca ]
default_ca = CA_default
[ CA_default ]
default_md = sha256
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage=critical,keyCertSign
extendedKeyUsage = serverAuth,clientAuth
[ req ]
prompt = no
distinguishedname = reqdistinguished_name
[ reqdistinguishedname ]
C=US
L=US
O=Self-signed Certificate
CN=my.server.dev
OU=Self-signed Certificate
- 请更新 C、L、O、CN 和 OU 参数的值。
2/ 在“终端”App 中生成 RSA 密钥。(请确保将 your_password 替换为你的真实密码)
cd ~/Desktop
openssl genrsa -aes256 -passout pass:your_password -out key.pem 2048
3/ 生成自签名证书和私钥。(请确保将 your_password 替换为你的真实密码)
openssl req -x509 -new -nodes -passin pass:your_password -config cert.config -key key.pem -sha256 -extensions v3_ca -days 825 -out root-ca.pem
4/ 转换为 p12 格式。(请确保将 your_password 替换为你的真实密码)
openssl pkcs12 -export -out root-ca.p12 -in root-ca.pem -inkey key.pem -passin pass:your_password -passout pass:your_password
5/ 完成后,你将得到 root-ca.p12 文件,接下来进入下一步。
3. 在 Proxyman 中作为自定义服务器证书使用
- 前往 Certificate 菜单 -> Custom Certificate -> 选择 Root Certificate 标签页
- 点击 Import 按钮 -> P12
- 选择 root-ca.p12,并输入密码
- 在“钥匙串访问”App 中信任你的自定义证书:
- 打开“钥匙串访问”App
- 搜索你添加的证书。证书名称可能是其 Common Name(CN)
- 双击打开证书,并选择“始终信任”
- 点击 “X” 关闭窗口并保存更改

请确认你能看到绿色对勾,表示证书已正确安装并受信任。

妥善保管私钥
大多数测试场景下,使用 Proxyman 生成的证书更简单。只有团队确实有明确需求时,才使用自定义根证书。切勿将 P12 文件、密码或私钥提交到版本控制系统,也不要通过聊天工具或邮件发送。测试项目不再需要该证书时,请将其从受信任的证书存储中移除。
Proxyman 是一款高性能的 macOS 应用,可帮助开发者抓取并查看来自 iOS 设备、iOS 模拟器和 Android 设备上的应用与域名的 HTTP/HTTPS 请求。
下载地址:https://proxyman.com

Noah Tran
