macOS 代码签名
macOS 要求代码签名,以便您的应用程序可以列在 Apple App Store 中,并防止从浏览器下载时显示您的应用程序损坏且无法启动的警告。
macOS 上的代码签名需要一个 Apple Developer 帐户,该帐户可以是付费的(每年 99 美元),也可以是免费计划的(仅用于测试和开发目的)。您还需要一个 Apple 设备来执行代码签名。这是签名过程所必需的,并且受 Apple 的条款和条件约束。
要为 macOS 设置代码签名,您必须创建 Apple 代码签名证书并将其安装到您的 Mac 电脑钥匙串中,或将其导出以在 CI/CD 平台中使用。
要创建新的签名证书,您必须从 Mac 电脑生成证书签名请求 (CSR) 文件。请参阅创建证书签名请求以了解如何为代码签名创建 CSR。
在您的 Apple Developer 帐户中,导航到 Certificates, IDs & Profiles(证书、标识符和配置文件)页面,然后点击 Create a certificate
按钮以打开创建新证书的界面。选择适当的证书类型(Apple Distribution
用于向 App Store 提交应用,Developer ID Application
用于在 App Store 外部发布应用)。上传您的 CSR,然后证书将被创建。
在 Certificates, IDs & Profiles(证书、标识符和配置文件)页面上,单击您要使用的证书,然后单击 Download
按钮。它会保存一个 .cer
文件,该文件在打开后会将证书安装到钥匙串中。
您可以配置 Tauri 在本地机器上或使用 CI/CD 平台时构建 macOS 应用程序时使用您的证书。
将证书安装到 Mac 电脑钥匙串后,您可以配置 Tauri 以将其用于代码签名。
证书钥匙串条目的名称代表 signing identity
,也可以通过执行以下命令找到它
security find-identity -v -p codesigning
此身份可以在 tauri.conf.json > bundle > macOS > signingIdentity
配置选项中提供,也可以通过 APPLE_SIGNING_IDENTITY
环境变量提供。
要在 CI/CD 平台中使用证书,您必须将证书导出为 base64 字符串,并配置 APPLE_CERTIFICATE
和 APPLE_CERTIFICATE_PASSWORD
环境变量。
- 打开
钥匙串访问
应用程序,单击 *登录* 钥匙串中的 *我的证书* 选项卡,然后找到您的证书条目。 - 展开条目,右键单击密钥项,然后选择
导出“$KEYNAME”
。 - 选择保存证书
.p12
文件的路径,并为导出的证书定义密码。 - 在终端上运行以下脚本,将
.p12
文件转换为 base64
openssl base64 -in /path/to/certificate.p12 -out certificate-base64.txt
- 将
certificate-base64.txt
文件的内容设置为APPLE_CERTIFICATE
环境变量。 - 将证书密码设置为
APPLE_CERTIFICATE_PASSWORD
环境变量。
GitHub Actions 配置示例
所需秘钥
APPLE_ID
- 您的 Apple ID 电子邮件APPLE_ID_PASSWORD
- 您的 Apple ID 密码APPLE_CERTIFICATE
- base64 编码的.p12
文件APPLE_CERTIFICATE_PASSWORD
- 您导出的.p12
文件的密码KEYCHAIN_PASSWORD
- 您的钥匙串密码
查看官方 GitHub 指南以了解 如何设置秘密。
name: 'build'
on: push: branches: - main
jobs: build-macos: needs: prepare strategy: matrix: include: - args: '--target aarch64-apple-darwin' arch: 'silicon' - args: '--target x86_64-apple-darwin' arch: 'intel' runs-on: macos-latest env: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} steps: - name: Import Apple Developer Certificate env: APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} run: | echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12 security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain security default-keychain -s build.keychain security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain security set-keychain-settings -t 3600 -u build.keychain security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain security find-identity -v -p codesigning build.keychain - name: Verify Certificate run: | CERT_INFO=$(security find-identity -v -p codesigning build.keychain | grep "Apple Development") CERT_ID=$(echo "$CERT_INFO" | awk -F'"' '{print $2}') echo "CERT_ID=$CERT_ID" >> $GITHUB_ENV echo "Certificate imported." - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }} with: args: ${{ matrix.args }}
要对您的应用程序进行公证,您必须提供凭据,以便 Tauri 能够通过 Apple 进行身份验证。这可以通过 App Store Connect API 或通过您的 Apple ID 完成。
- 打开 App Store Connect 的“用户和访问”页面,选择“集成”选项卡,单击“添加”按钮,然后选择一个名称和“开发者访问权限”。
- 将
APPLE_API_ISSUER
环境变量设置为密钥表上方显示的值。 - 将
APPLE_API_KEY
环境变量设置为该表中“密钥 ID”列中的值。 - 下载私钥,这只能进行一次,并且在页面重新加载后才可见(按钮显示在新创建的密钥的表行上)。
- 将
APPLE_API_KEY_PATH
环境变量设置为下载的私钥的文件路径。
- 将
APPLE_ID
环境变量设置为您的 Apple 帐户电子邮件。 - 将
APPLE_PASSWORD
环境变量设置为您的 Apple 帐户的应用专用密码。 - 将
APPLE_TEAM_ID
环境变量设置为您的 Apple 团队 ID。您可以在 您的帐户成员资格页面中找到您的团队 ID。
如果您不想提供 Apple 认证的身份,但仍希望签名您的应用程序,则可以配置 *临时* 签名。
这对于 ARM(Apple Silicon)设备很有用,因为所有来自互联网的应用程序都需要代码签名。
要配置临时签名,请向 Tauri 提供伪身份 -
,例如
"signingIdentity": "-"
有关配置 Tauri 签名身份的详细信息,请参见上文。
© 2025 Tauri 贡献者。CC-BY / MIT