苹果证书查看器
拖入从 Apple Developer 网站下载的 .cer、.pem 或 .crt,或者带密码的 .p12,就能看到它是哪种证书(Apple Development、Apple Distribution、Developer ID、推送证书及旧类型)、团队 ID、签发它的苹果中间证书、序列号、有效期和剩余天数、密钥类型和长度,以及 SHA-1 和 SHA-256 指纹。对 .p12,还会告诉你里面的私钥是否与证书匹配,但不显示私钥。全部在浏览器里完成。
不会上传任何内容。文件和密码只留在本页、在你的浏览器里。.p12 里的私钥不会显示也不会保存:只拿它和证书比对,随后从内存中清除。
拖入 .cer、.pem、.crt 或 .p12 文件
只在浏览器里读取,不会上传。
使用方法
- •苹果的 .cer 是 DER 编码的 X.509 证书;.pem 或 .crt 是同样的内容写成 Base64 文本。本页用自带的 DER 解析器读取主题、签发者、序列号、有效期、公钥和扩展字段。
- •证书类型根据通用名称的开头(“Apple Development:”“Developer ID Application:”等)和苹果自己的扩展字段判断:例如 Apple Development 证书带有 1.2.840.113635.100.6.1.2 和 1.2.840.113635.100.6.1.12。两者不一致时,页面会指出来。
- •.p12 在浏览器里解密。PBES2(PBKDF2 加 AES-CBC,OpenSSL 3 的默认格式)用 Web Crypto 解密。macOS 的 `security export`、macOS 自带的 openssl 和 `openssl pkcs12 -legacy` 写出的较旧 PKCS #12 加密(证书用 RC2-40 或 RC2-128,私钥用三密钥或双密钥 3DES,密钥按 RFC 7292 用 SHA-1 派生)由本页自己的 RC2 和 3DES 代码解密,因为 Web Crypto 两种算法都不支持。密码不会离开本页。
- •解密之前,本页先检查文件的完整性校验码:一个由你的密码派生密钥的 HMAC(SHA-1、SHA-256、SHA-384 或 SHA-512)。密码错误时会直接说密码不对,而不是给出乱码。
- •如果 .p12 里有私钥,就拿它的公钥部分与每张证书的公钥比对。解密出的私钥字节在比对后立即被覆盖,不会显示。
- •指纹是证书的 SHA-1 和 SHA-256 哈希,由 Web Crypto 计算。剩余天数按你设备的时钟计算。
它做不到的事
- •不校验到苹果根证书的签名链,也不检查证书是否已吊销,所以自己生成、名字像苹果证书的证书会显示同样的字段。这些检查由“钥匙串访问”和 codesign 完成。
- •不解密使用 RC4 或单 DES(PKCS #5 v1 方案)的 .p12。当前的 macOS 和 OpenSSL 默认不写出这些格式。本页能识别它们,并给出可以改用的 openssl 命令。
- •不验证较新的 PBMAC1 完整性校验码(RFC 9579)。这样的文件仍然可以打开,密码错误会因为解密失败而被发现。
- •不会显示、导出或转换私钥,也不读取 .p7b 证书包。
常见问题
- 怎么查看 .cer 文件里的内容?
- 把它拖到本页。在 Mac 上也可以运行 `openssl x509 -inform DER -in file.cer -noout -subject -issuer -dates -serial`,或者双击把它加入“钥匙串访问”再打开查看。从 Apple Developer 网站下载的 .cer 是二进制(DER)格式;以 -----BEGIN CERTIFICATE----- 开头的是 PEM,这时去掉 -inform DER。
- 我需要哪一个苹果 WWDR 中间证书?
- 你的证书“签发者”一行写的那一个。苹果先后签发过几代全球开发者关系(WWDR)中间证书,用 OU 字段区分(G3、G4、G5、G6)。如果“钥匙串访问”提示证书“不受信任”或签发者无效,请从苹果证书颁发机构页面 apple.com/certificateauthority 安装对应的中间证书。
- 本页能打开从 macOS 钥匙串导出的 .p12 吗?
- 能,直接在本页打开。在我们对 macOS 27 的测试中,security export 命令用 RC2-40 加密证书、用三密钥 3DES 加密私钥,并带 SHA-1 完整性校验码。浏览器的 Web Crypto 两种算法都不支持,所以本页用自己的代码解密;我们把它读出的证书与 openssl pkcs12 的输出做了对比。只有使用 RC4 或单 DES 的 .p12 仍需要运行页面给出的 openssl 命令。
- 为什么钥匙串拒绝导入 OpenSSL 3 生成的 .p12?
- OpenSSL 3 默认使用 AES 加密和 SHA-256 完整性校验码。在我们的测试中,macOS 的 `security import` 以“MAC verification failed”拒绝了这样的文件,而同一张证书用 `openssl pkcs12 -export -legacy` 导出后可以正常导入。要给 Mac 钥匙串用的 .p12,导出时加上 -legacy。
- “私钥匹配”说明了什么?
- 证书本身无法签名,Xcode 还需要生成证书请求时创建的私钥。私钥匹配,说明这个 .p12 足以在另一台 Mac 上签名。如果没有私钥或私钥不匹配,Xcode 会提示证书缺少私钥。
- 签名证书过期后会怎样?
- 不能再用它为新构建签名,包含它的描述文件也会失效,所以开发版和 Ad Hoc 版会无法启动。已经上架 App Store 的 App 不受影响。用 Developer ID 签名并带安全时间戳的 Mac App,在证书过期后仍能打开。推送证书过期后,推送通知会停止,直到换上新证书。