跳转至正文

Apple 签名

iOS 证书生成器

无需 Mac 即可创建 iOS 分发或开发证书。在此生成证书签名请求 (CSR) 和私钥,将 CSR 上传至 Apple,并将签发的证书转换为用于签名的 .p12 文件。

  • 无需使用 Keychain Access 或 Mac,即可在 Windows、Linux 或 macOS 上创建符合 Apple 标准的 CSR。
  • 适用于 Apple Distribution(App Store、TestFlight、ad hoc)和 Apple Development 证书。
  • 直接在本页面用浏览器将已签发的 .cer 转换为 .p12,用于 Xcode、fastlane、CI 或 Capgo Cloud Build。

工作流

  1. 1. 输入要附加到签名请求中的证书主体信息。
  2. 2. 下载 CSR 和匹配的私钥。
  3. 3. 在 Apple Developer 中创建证书时上传 CSR。
  4. 4. 在下方第 2 步中,将已签发的 .cer 和私钥转换为受密码保护的 .p12。

第 1 步

生成 CSR 和私钥

使用你希望在 Apple 证书请求中体现的个人或组织身份。

输出

您生成的签名请求

生成 CSR 前不会显示任何内容。生成后,请下载这两个文件并妥善保管私钥。

生成证书请求后,可在此查看主体摘要和下载按钮。

第 2 步

将您的 Apple .cer 转换为 .p12

Apple 签发证书后,将 .cer 与第 1 步中的私钥结合,生成受密码保护的 .p12 用于 Xcode、fastlane、CI 或 Capgo Cloud Build。

完全在浏览器中运行。 您的证书、私钥和密码仅在本地读取,绝不会上传到任何服务器。

来自 Apple Developer 的 distribution.cer 或 development.cer 文件。支持 DER 和 PEM 格式。

随您上传至 Apple 的 CSR 一起下载的 ios-private-key.pem 文件。

输出

您的 .p12 签名身份

选择 .cer 和私钥,设置密码,然后生成 .p12。它使用 3DES 加密和 SHA-1 MAC,这是 macOS Keychain 和 Xcode 接受的格式。

基础知识

什么是 iOS 签名证书?

Apple 要求每个 iOS 应用都必须经过 code 签名。签名证书用于证明该 build 来自您的 Apple Developer 团队成员;如果 iOS 无法信任其签名,则会拒绝安装或启动应用。

获取证书需要三个文件。其中 CSR (.csr) 包含您的公钥和身份信息,并需提交给 Apple。而 私钥 (.pem) 留在你手里。而 证书 (.cer) 是 Apple 签发的证书。构建工具 随后需要把证书和私钥一起作为 .p12 文件 文件。

在 Mac 上,Keychain Access 会创建 CSR,并把私钥存进你的登录钥匙串。这个生成器会直接给你这两个文件,因此你可以在 Windows、Linux 或 CI runner 上创建 Apple Distribution 或 Apple Development 证书,而且始终知道私钥在哪里。

安全与隐私

私钥的处理方式

  • CSR 和 RSA 2048 位私钥由无状态的 Capgo 端点通过 HTTPS 按需生成,并直接返回给你的浏览器。
  • 响应会带有 Cache-Control: no-store。不会将任何内容保存到数据库,也不会在响应后保留。
  • CSR 使用 Apple Developer 要求的 SHA-256 签名。只有 CSR 会上传到 Apple,私钥始终留在您本地。
  • .cer 转 .p12 转换器完全在浏览器中运行。您的证书、私钥和密码绝不会被上传。
  • 无需账号或注册,请求会限流以防止滥用。

想直接在本地生成密钥?这条 OpenSSL 命令可以生成相同的两个文件。

等价的 OpenSSL 命令
openssl req -new -newkey rsa:2048 -nodes \
  -keyout ios-private-key.pem \
  -out ios-certificate-request.csr \
  -subj "/emailAddress=jane@company.com/CN=Jane Doe/C=US"

分步指南

如何在没有 Mac 的情况下创建 iOS 发布证书

从 CSR 到 TestFlight 上的签名构建。每一步都能在 Windows、Linux 或 macOS 的浏览器和终端中完成。

  1. 第 1 步

    生成 CSR 和私钥

    在上方表单中输入姓名、邮箱和两位字母的国家代码 code,然后点击 Generate CSR and private key。下载这两个文件,并妥善保管私钥。

  2. 第 2 步

    在 Apple Developer 中创建证书

    登录 developer.apple.com,打开 Certificates, Identifiers & Profiles,点击加号按钮,然后选择 Apple Distribution 或 Apple Development。

  3. 第 3 步

    上传 CSR 并下载 .cer 文件

    上传 ios-certificate-request.csr 文件,点击继续,然后下载签发的证书(通常名为 distribution.cer 或 development.cer)。

  4. 步骤 4

    将 .cer 转换为 .p12 文件

    使用本页第 2 步中的 .cer 转 .p12 工具:选择 .cer 文件和私钥,设置密码,然后下载 .p12。该工具在浏览器中运行,你也可以改用 OpenSSL 命令。

  5. 步骤 5

    创建 Provisioning Profile

    在 Apple Developer 中,为你的 App ID 创建 App Store、ad hoc 或 development provisioning profile,并选择新创建的证书。

  6. 步骤 6

    签名并发布你的 App

    将 .p12 和 profile 导入 Xcode、fastlane、你的 CI secrets 或 Capgo Cloud Build,然后构建并把 App 上传到 TestFlight 或 App Store。

使用输出结果

用 .p12 签名你的 iOS App

最快的方式是使用 浏览器端的 .cer 转 .p12 转换器 上方工具。 想用命令行?OpenSSL 也能完成同样的工作;它会要求输入导出密码,这个密码就是你的 .p12 密码。

用 OpenSSL 创建 .p12

macOS 和大多数 Linux 发行版都预装了 OpenSSL,Windows 上也可以通过 Git Bash 或 WSL 使用。

将 .cer 转换为 .p12
# 1. Convert Apple's DER .cer to PEM
openssl x509 -inform DER -in distribution.cer -out distribution.pem

# 2. Bundle the certificate and private key into a .p12
#    -legacy (OpenSSL 3) keeps the file compatible with macOS Keychain.
#    Drop it on OpenSSL 1.1 or LibreSSL, which do not support the flag.
openssl pkcs12 -export -legacy \
  -inkey ios-private-key.pem \
  -in distribution.pem \
  -name "Apple Distribution" \
  -out distribution.p12

Capgo 云端构建

把 .p12 和 provisioning profile 保存一次,然后 使用 Capgo 在云端构建并签名 iOS 和 Android 应用.

Capgo CLI
bunx @capgo/cli@latest build credentials save \
  --platform ios \
  --certificate ./distribution.p12 \
  --p12-password "your-p12-password" \
  --ios-provisioning-profile "com.example.app=./profile.mobileprovision" \
  --apple-team-id "TEAM123456"

fastlane 和 Xcode

在 Mac 上,双击 .p12 文件将其导入 Keychain,Xcode 会自动识别。在 CI runner 上,用 fastlane 将其导入临时 keychain。

Fastfile
import_certificate(
  certificate_path: "distribution.p12",
  certificate_password: ENV["P12_PASSWORD"],
  keychain_name: "build.keychain",
  keychain_password: ENV["KEYCHAIN_PASSWORD"]
)

CI secrets 与密钥检查

为 GitHub Actions 或 GitLab secrets 编码签名文件,并确认证书与私钥匹配。

base64 和 OpenSSL
# Encode the .p12 and profile for CI secrets
base64 -i distribution.p12 | tr -d '\n' > p12.base64
base64 -i profile.mobileprovision | tr -d '\n' > profile.base64

# Check that the certificate and key match (both hashes must be equal)
openssl x509 -noout -modulus -in distribution.pem | openssl md5
openssl rsa -noout -modulus -in ios-private-key.pem | openssl md5

故障排除

常见的 iOS 证书错误及解决方法

输入的密码不正确(Keychain 导入)
OpenSSL 3 加密 .p12 文件时使用的算法可能会被 macOS Keychain 拒绝。请用上文所示的 OpenSSL 3 和 -legacy 参数重新导出 .p12。
证书与私钥不匹配
该 .cer 是为另一个 CSR 签发的。请使用与那个 CSR 一起下载的私钥,或吊销该证书并用新的 CSR 重新开始。
无法加载证书
Apple 提供的 .cer 文件是 DER 格式。用 openssl x509 转换 .cer 时,请加上 -inform DER。
Provisioning profile 不包含签名证书
Provisioning profile 与特定证书绑定。创建新证书后,请编辑或重新生成 provisioning profile,然后重新下载。
已达到证书数量上限
Apple 限制了团队可持有的分发证书数量。请在 Apple Developer 中吊销一个未使用的证书。已在 App Store 上线的应用不受影响。
证书在 Keychain 中不受信任
请从 Apple PKI 安装当前的 Apple Worldwide Developer Relations (WWDR) 中间证书,然后重新导入 .p12。

签名完成后

无需再走一遍应用商店审核,即可发布 Web 端修复

原生二进制签名后,Capgo live updates 就能通过 OTA 下发 Capacitor 的 Web 层变更:channels、回滚,以及你现有的任何 CI/CD。 准备好把 OTA 接入同一条发布路径时,可免费试用。

常见问题

iOS 证书生成器常见问题解答

关于 CSR、证书类型、.p12 转换、Apple Developer 账号,以及在 CI 或云构建中使用证书的解答。

这个 iOS 证书生成器能生成什么?

它会生成一个证书签名请求 (.csr) 和对应的 RSA 2048 位私钥 (.pem)。将 CSR 上传至 Apple Developer 获取 Apple Distribution 或 Apple Development 证书 (.cer),然后把 .cer 与私钥合并成 .p12 文件,供 Xcode、fastlane、CI 或 Capgo Cloud Build 使用。

什么是证书签名请求(CSR)?

CSR 是一个包含您的公钥和身份信息(姓名、邮箱、国家)的小文件,并由您的私钥签名。Apple 使用它来颁发与该密钥绑定的签名证书。私钥绝不会发送给 Apple,因此您必须妥善保存本工具生成的 .pem 文件。

没有 Mac 也能创建 iOS 发布证书吗?

可以。在这里生成 CSR 和私钥,用任意浏览器在 Apple Developer 门户上传 CSR,下载 .cer,再用本页第 2 步的转换器转成 .p12。Windows、Linux 或 macOS 都能完成,全程不需要 Keychain Access。

在 Apple Developer 中应该选择哪种证书类型?

选择 Apple Development,用于通过 Xcode 在已注册的测试设备上运行 build。选择 Apple Distribution,用于为 App Store、TestFlight 和 ad hoc 分发签名。同一个 CSR 对两种类型都适用;证书类型是在 Apple Developer 里选的,不是在这个工具里。

私钥会存储在服务器上吗?

不会。在第 1 步中,CSR 和私钥由无状态的 Capgo 端点通过 HTTPS 按需生成,并通过 Cache-Control: no-store 直接返回给您的浏览器;它们绝不会写入数据库,也不会在响应后保留。第 2 步的 .cer 转 .p12 转换器完全在您的浏览器中运行,不会上传任何内容。如果您的策略要求本地生成密钥,请使用本页提供的对应 OpenSSL 命令。

为什么我需要将 .cer 文件转换为 .p12?

Apple 提供的 .cer 文件仅包含公钥证书。应用签名还需要私钥,因此构建工具需要一个包含证书和私钥、并受密码保护的 .p12 文件。

如何将 .cer 转换为 .p12?

使用本页面的第 2 步:选择 Apple 提供的 .cer(DER 或 PEM),选择用于创建 CSR 的 .pem 私钥,输入密码,然后点击 Build .p12 file。浏览器会校验证书与密钥是否匹配,并生成一个 macOS Keychain、Xcode 和 fastlane 都能接受的 3DES 加密 .p12 文件。不会上传任何内容。你也可以将 .p12 复制为 base64,用于 CI secrets。

我需要 Apple Developer 账号吗?

是的。上传 CSR 并签发签名证书需要付费的 Apple Developer Program 会员资格(每年 99 美元,或用于企业内部分发的 Enterprise program)。CSR 本身无需账号即可生成。

iOS 签名证书的有效期是多久?

Apple Development 和 Apple Distribution 证书有效期为一年。已在 App Store 上线的 App 在证书过期或被吊销后仍可正常运行,但下次构建签名需要新的证书和 provisioning profile。

我可以重复使用同一个 CSR 或私钥吗?

可以,但每个证书使用全新的密钥对更安全,也更容易轮换。千万不要混用:.cer 只能与创建其 CSR 的那个私钥配合使用。如果私钥丢失,请吊销证书并重新生成 CSR。

我可以用这个 CSR 来申请推送通知 (APNs) 证书吗?

可以。在创建 APNs SSL 证书时,Apple 同样需要 CSR。对于新应用,使用 APNs 身份验证密钥 (.p8) 通常更简单,因为它永不过期,且适用于你所有的应用。

Capgo Native Build

使用 Capgo 在云端构建并签名 iOS 和 Android App

上传用本工具创建的 .p12 和 provisioning profile,从 CI 触发 release builds,即可发布到 TestFlight 或 App Store,无需维护自己的构建农场。

探索 Native Build