macOS 代码签名
macOS 上需要代码签名,以允许您的应用程序在 Apple App Store 中列出,并防止从浏览器下载时出现应用程序已损坏且无法启动的警告。
先决条件
macOS 上的代码签名需要一个 Apple Developer 帐户,该帐户可以是付费的(每年 99 美元)或免费计划。您还需要一台 Apple 设备来执行代码签名。这是签名过程的要求,并且由于 Apple 的条款和条件。
签名
要为 macOS 设置代码签名,您必须创建 Apple 代码签名证书并将其安装到您的 Mac 计算机钥匙串中,或将其导出以在 CI/CD 平台中使用。
创建签名证书
要创建新的签名证书,您必须从您的 Mac 计算机生成证书签名请求 (CSR) 文件。请参阅 创建证书签名请求 以了解如何为代码签名创建 CSR。
在您的 Apple Developer 帐户中,导航到 证书、ID 和描述文件页面,然后单击 创建证书
按钮以打开创建新证书的界面。选择适当的证书类型(Apple Distribution
用于将应用程序提交到 App Store,Developer ID Application
用于在 App Store 之外发布应用程序)。上传您的 CSR,证书将被创建。
下载证书
在 证书、ID 和描述文件页面 上,单击您要使用的证书,然后单击 下载
按钮。它会保存一个 .cer
文件,该文件在打开后会将证书安装到钥匙串中。
配置 Tauri
您可以配置 Tauri 以在本地计算机上或在使用 CI/CD 平台时使用您的证书构建 macOS 应用程序。
本地签名
在 Mac 计算机钥匙串中安装证书后,您可以配置 Tauri 以使用它进行代码签名。
证书的钥匙串条目的名称代表 签名身份
,也可以通过执行以下命令找到
security find-identity -v -p codesigning
此身份可以在 tauri.conf.json > bundle > macOS > signingIdentity
配置选项中提供,也可以通过 APPLE_SIGNING_IDENTITY
环境变量提供。
在 CI/CD 平台中签名
要在 CI/CD 平台中使用证书,您必须将证书导出为 base64 字符串,并配置 APPLE_CERTIFICATE
和 APPLE_CERTIFICATE_PASSWORD
环境变量
- 打开
钥匙串访问
应用程序,单击 login 钥匙串中的“我的证书”选项卡,然后找到您的证书条目。 - 展开条目,右键单击密钥项目,然后选择
导出 "$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 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 验证身份
-
APPLE_API_ISSUER、APPLE_API_KEY 和 APPLE_API_KEY_PATH:使用 App Store Connect API 密钥进行身份验证
打开 App Store Connect 的用户和访问页面,选择“集成”选项卡,单击“添加”按钮,然后选择名称和“开发者”访问权限。 APPLE_API_ISSUER(发行者 ID)显示在密钥表上方,APPLE_API_KEY 是该表上“密钥 ID”列中的值。您还需要下载私钥,私钥只能下载一次,并且仅在页面重新加载后可见(按钮显示在新创建的密钥的表格行中)。必须通过 APPLE_API_KEY_PATH 环境变量设置私钥文件路径。
-
APPLE_ID、APPLE_PASSWORD 和 APPLE_TEAM_ID:使用您的 Apple ID 进行身份验证
或者,要使用您的 Apple ID 进行身份验证,请将 APPLE_ID 设置为您的 Apple 帐户电子邮件,并将 APPLE_PASSWORD 设置为 Apple 帐户的应用专用密码。
© 2025 Tauri 贡献者。CC-BY / MIT