mcpField
S
signing-tauri-apps

signing-tauri-apps

github.com/dchukセキュリティ36179 回インストール40 週間前に更新
リポジトリ

signing-tauri-apps について

Tauri 開発者向けのクロスプラットフォームコード署名ガイドです。Android、iOS、Linux、macOS、Windows の証明書設定、CI/CD 変数、macOS の公証、Windows のクラウド署名を扱います。

主な機能

  1. 015 プラットフォームの署名手順
  2. 02証明書と署名 ID の設定
  3. 03CI/CD 署名用変数の準備
  4. 04macOS の公証対応
  5. 05Windows のカスタム署名コマンド設定
  6. 06Linux AppImage 署名の検証

活用シーン

  1. 01ストア配布用 Android・iOS 署名の準備
  2. 02macOS アプリの署名と公証の設定
  3. 03Windows ビルドの証明書署名設定
  4. 04CI/CD での署名認証情報の管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill signing-tauri-apps

インストール後、Claude Code で/signing-tauri-appsを入力して読み込まれたか確認します。

詳細

Tauri コード署名スキル

このスキルでは、サポートされているすべてのプラットフォームで Tauri アプリケーションにコード署名するための包括的なガイダンスを提供します。

プラットフォームの概要

プラットフォーム要件証明書の種類
AndroidPlay ストアでは必須Java Keystore (JKS)
iOS配布には必須Apple Developer 証明書
Linux任意(信頼性が向上します)GPG キー
macOS配布には必須Developer ID / Apple Distribution
Windows必須(SmartScreen)OV または EV 証明書

Android の署名

キーストアを生成する

macOS/Linux:

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

Windows:

keytool -genkey -v -keystore $env:USERPROFILE\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
設定ファイル

src-tauri/gen/android/keystore.properties を作成します。

password=<your-password>
keyAlias=upload
storeFile=/path/to/upload-keystore.jks

重要: keystore.properties をバージョン管理にコミットしないでください。

Gradle の設定

src-tauri/gen/android/app/build.gradle.kts を変更します。

import java.io.FileInputStream

// Add before android { } block
val keystorePropertiesFile = rootProject.file("keystore.properties")
val keystoreProperties = java.util.Properties()
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}

android {
    // ... existing config ...

    signingConfigs {
        create("release") {
            keyAlias = keystoreProperties["keyAlias"] as String
            keyPassword = keystoreProperties["password"] as String
            storeFile = file(keystoreProperties["storeFile"] as String)
            storePassword = keystoreProperties["password"] as String
        }
    }

    buildTypes {
        release {
            signingConfig = signingConfigs.getByName("release")
            // ... other release config ...
        }
    }
}
CI/CD 環境変数
変数説明
ANDROID_KEY_ALIASキーのエイリアス(例:upload)
ANDROID_KEY_PASSWORDキーストアのパスワード
ANDROID_KEY_BASE64Base64 エンコードされたキーストアファイル

GitHub Actions の例:

- name: Setup Android signing
  run: |
    cd src-tauri/gen/android
    echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties
    echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties
    base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks
    echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties

iOS の署名

前提条件
  • Apple Developer Program への登録(年額 $99)
  • App Store Connect に登録済みのバンドル識別子
  • iOS コード署名証明書
  • モバイルプロビジョニングプロファイル
自動署名(推奨)

ローカル開発では、Xcode の「設定」>「アカウント」から認証します。

CI/CD では、App Store Connect API キーを作成し、次の値を設定します。

変数説明
APPLE_API_ISSUERApp Store Connect の Issuer ID
APPLE_API_KEYApp Store Connect の Key ID
APPLE_API_KEY_PATH.p8 秘密鍵ファイルへのパス
手動署名
変数説明
IOS_CERTIFICATEBase64 エンコードされた .p12 証明書
IOS_CERTIFICATE_PASSWORD証明書のエクスポート時に使用したパスワード
IOS_MOBILE_PROVISIONBase64 エンコードされたプロビジョニングプロファイル
配布方法別の証明書の種類
配布方法証明書の種類
デバッグApple Development または iOS App Development
App StoreApple Distribution または iOS Distribution
Ad HocApple Distribution または iOS Distribution
証明書をエクスポートする
  1. Keychain Access を開きます
  2. 証明書を見つけます
  3. 秘密鍵を右クリックします
  4. 「エクスポート」を選択し、.p12 として保存します
  5. Base64 に変換します:base64 -i certificate.p12
プロビジョニングプロファイルを作成する
  1. 一致するバンドル識別子で App ID を登録します
  2. 配布方法に応じたプロビジョニングプロファイルを作成します
  3. 証明書をプロファイルに関連付けます
  4. ダウンロードして変換します:base64 -i profile.mobileprovision

Linux の署名(AppImage)

GPG キーを生成する
gpg2 --full-gen-key

キーを安全にバックアップしてください。

環境変数
変数説明
SIGN署名を有効にするには 1 に設定します
SIGN_KEYGPG キー ID(省略可能。設定されていない場合はデフォルトが使用されます)
APPIMAGETOOL_SIGN_PASSPHRASEキーのパスワード(CI/CD では必須)
APPIMAGETOOL_FORCE_SIGN署名エラー時にビルドを失敗させるには 1 に設定します
署名付きでビルドする
SIGN=1 APPIMAGETOOL_SIGN_PASSPHRASE="your-passphrase" npm run tauri build
埋め込み署名を表示する
./src-tauri/target/release/bundle/appimage/app_version_amd64.AppImage --appimage-signature
署名を検証する

AppImageUpdate releases から検証ツールをダウンロードします。

chmod +x validate-x86_64.AppImage
./validate-x86_64.AppImage your-app.AppImage

注: AppImage は署名を自動検証しません。ユーザーが手動で検証する必要があります。


macOS の署名と公証

前提条件
  • Apple Developer Program への登録(年額 $99)
  • コード署名用の Mac コンピューター
  • 無料アカウントではアプリケーションを公証できません
証明書の種類
証明書用途
Apple DistributionApp Store への提出
Developer ID ApplicationApp Store 外での配布
証明書の作成
  1. キーチェーンアクセスから証明書署名要求(CSR)を生成します
  2. Apple Developer > Certificates, IDs & Profiles に CSR をアップロードします
  3. .cer をダウンロードし、ダブルクリックしてインストールします
設定

tauri.conf.json:

{
  "bundle": {
    "macOS": {
      "signingIdentity": "Developer ID Application: Your Name (TEAM_ID)"
    }
  }
}
CI/CD 用環境変数

証明書の変数:

変数説明
APPLE_CERTIFICATEBase64 エンコードされた .p12 証明書
APPLE_CERTIFICATE_PASSWORDエクスポートした証明書のパスワード
APPLE_SIGNING_IDENTITYキーチェーン内の証明書名

公証 - オプション 1:App Store Connect API(推奨):

変数説明
APPLE_API_ISSUER発行者 ID
APPLE_API_KEYキー ID
APPLE_API_KEY_PATH.p8 秘密鍵へのパス

公証 - オプション 2:Apple ID:

変数説明
APPLE_IDApple ID のメールアドレス
APPLE_PASSWORDアプリ固有のパスワード
APPLE_TEAM_IDチーム識別子
CI/CD 用証明書のエクスポート
# Export from Keychain as .p12, then:
base64 -i certificate.p12 | pbcopy
アドホック署名(テスト専用)

Apple の認証情報を使わずに配布またはテストする場合:

{
  "bundle": {
    "macOS": {
      "signingIdentity": "-"
    }
  }
}
GitHub Actions の例
- name: Import certificate
  env:
    APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
    APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
  run: |
    echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12
    security create-keychain -p actions temp.keychain
    security import certificate.p12 -k temp.keychain -P $APPLE_CERTIFICATE_PASSWORD -T /usr/bin/codesign
    security list-keychains -s temp.keychain
    security unlock-keychain -p actions temp.keychain
    security set-key-partition-list -S apple-tool:,apple: -s -k actions temp.keychain

Windows の署名

証明書の種類
種類SmartScreen入手可能時期
OV(組織認証)時間をかけて信頼性を構築2023 年 6 月 1 日より前
EV(拡張認証)即時に信頼2023 年 6 月 1 日以降に必要

注: 2023 年 6 月 1 日以降に取得した証明書で、SmartScreen に即時信頼されるには EV 証明書が必要です。

設定

tauri.conf.json:

{
  "bundle": {
    "windows": {
      "certificateThumbprint": "A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0",
      "digestAlgorithm": "sha256",
      "timestampUrl": "http://timestamp.sectigo.com"
    }
  }
}
証明書の拇印を確認する
  1. 証明書の詳細を開きます
  2. [詳細]タブに移動します
  3. 「拇印」フィールドを探します
  4. 16 進数文字列をコピーします(空白を削除してください)
一般的なタイムスタンプ URL
  • http://timestamp.sectigo.com
  • http://timestamp.digicert.com
  • http://timestamp.globalsign.com
証明書を PFX に変換する
openssl pkcs12 -export -in cert.cer -inkey private-key.key -out certificate.pfx
CI/CD 用環境変数
変数説明
WINDOWS_CERTIFICATEBase64 エンコードされた .pfx ファイル
WINDOWS_CERTIFICATE_PASSWORDPFX エクスポートのパスワード
GitHub Actions の例
- name: Import Windows certificate
  env:
    WINDOWS_CERTIFICATE: ${{ secrets.WINDOWS_CERTIFICATE }}
    WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}
  run: |
    echo "$WINDOWS_CERTIFICATE" | base64 --decode > certificate.pfx
    Import-PfxCertificate -FilePath certificate.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString -String $env:WINDOWS_CERTIFICATE_PASSWORD -AsPlainText -Force)
  shell: pwsh
Azure Key Vault による署名

Azure Key Vault を使ってクラウドベースで署名する場合:

変数説明
AZURE_CLIENT_IDAzure AD アプリケーションのクライアント ID
AZURE_CLIENT_SECRETAzure AD アプリケーションのシークレット
AZURE_TENANT_IDAzure AD テナント ID

tauri.conf.json で設定します:

{
  "bundle": {
    "windows": {
      "signCommand": "relic sign --key azurekeyvault --file %1"
    }
  }
}
Azure Trusted Signing

Azure Code Signing サービスを使用する場合:

{
  "bundle": {
    "windows": {
      "signCommand": "trusted-signing-cli -e <endpoint> -a <account> -c <profile> %1"
    }
  }
}
カスタム署名コマンド

その他の署名ツールやクロスプラットフォームビルドの場合:

{
  "bundle": {
    "windows": {
      "signCommand": "your-signing-tool --sign %1"
    }
  }
}

%1 プレースホルダーは実行可能ファイルのパスに置き換えられます。


クイックリファレンス:すべての環境変数

Android
  • ANDROID_KEY_ALIAS
  • ANDROID_KEY_PASSWORD
  • ANDROID_KEY_BASE64
iOS(手動)
  • IOS_CERTIFICATE
  • IOS_CERTIFICATE_PASSWORD
  • IOS_MOBILE_PROVISION
iOS/macOS(API キー)
  • APPLE_API_ISSUER
  • APPLE_API_KEY
  • APPLE_API_KEY_PATH
macOS(証明書)
  • APPLE_CERTIFICATE
  • APPLE_CERTIFICATE_PASSWORD
  • APPLE_SIGNING_IDENTITY
macOS(Apple ID による公証)
  • APPLE_ID
  • APPLE_PASSWORD
  • APPLE_TEAM_ID
Linux
  • SIGN
  • SIGN_KEY
  • APPIMAGETOOL_SIGN_PASSPHRASE
  • APPIMAGETOOL_FORCE_SIGN
Windows
  • WINDOWS_CERTIFICATE
  • WINDOWS_CERTIFICATE_PASSWORD
Azure(Windows)
  • AZURE_CLIENT_ID
  • AZURE_CLIENT_SECRET
  • AZURE_TENANT_ID

コメント