Skip to main content
signing-tauri-apps Guides the user through Tauri application code signing and notarization for Android, iOS, Linux, macOS, and Windows platforms including certificate setup and configuration.
설치로 이동 Skills Marketplace 커뮤니티가 만든 AI 스킬을 발견하고 탐색하세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill signing-tauri-apps명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Zip 다운로드 다운로드 중... name signing-tauri-apps description Guides the user through Tauri application code signing and notarization for Android, iOS, Linux, macOS, and Windows platforms including certificate setup and configuration.
Tauri Code Signing Skill
This skill provides comprehensive guidance for code signing Tauri applications across all supported platforms.
Platform Overview
Platform Requirement Certificate Type Android Required for Play Store Java Keystore (JKS) iOS Required for distribution Apple Developer Certificate Linux Optional (enhances trust) GPG Key macOS Required for distribution Developer ID / Apple Distribution Windows Required (SmartScreen) OV or EV Certificate
Android Signing
Generate Keystore
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
Configuration File
Create src-tauri/gen/android/keystore.properties:
password=<your-password>
keyAlias=upload
storeFile=/path/to/upload-keystore.jks
IMPORTANT: Never commit keystore.properties to version control.
Gradle Configuration Modify src-tauri/gen/android/app/build.gradle.kts:
import java.io.FileInputStream
val keystorePropertiesFile = rootProject.file("keystore.properties" )
val keystoreProperties = java.util.Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
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" )
}
}
}
CI/CD Environment Variables Variable Description ANDROID_KEY_ALIASKey alias (e.g., upload) ANDROID_KEY_PASSWORDKeystore password ANDROID_KEY_BASE64Base64-encoded keystore file
- 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 Signing
Prerequisites
Apple Developer Program enrollment ($99/year)
Bundle identifier registered in App Store Connect
iOS code signing certificate
Mobile provisioning profile
Automatic Signing (Recommended) For local development, authenticate through Xcode Settings > Accounts.
For CI/CD, create an App Store Connect API key and set:
Variable Description APPLE_API_ISSUERIssuer ID from App Store Connect APPLE_API_KEYKey ID from App Store Connect APPLE_API_KEY_PATHPath to the .p8 private key file
Manual Signing Variable Description IOS_CERTIFICATEBase64-encoded .p12 certificate IOS_CERTIFICATE_PASSWORDPassword used when exporting certificate IOS_MOBILE_PROVISIONBase64-encoded provisioning profile
Certificate Types by Distribution Method Distribution Certificate Type Debugging Apple Development or iOS App Development App Store Apple Distribution or iOS Distribution Ad Hoc Apple Distribution or iOS Distribution
Export Certificate
Open Keychain Access
Find your certificate
Right-click the private key
Select "Export" and save as .p12
Convert to base64: base64 -i certificate.p12
Create Provisioning Profile
Register App ID with matching bundle identifier
Create provisioning profile for your distribution method
Link certificate to profile
Download and convert: base64 -i profile.mobileprovision
Linux Signing (AppImage)
Generate GPG Key Back up the key securely.
Environment Variables Variable Description SIGNSet to 1 to enable signing SIGN_KEYGPG Key ID (optional, uses default if not set) APPIMAGETOOL_SIGN_PASSPHRASEKey password (required for CI/CD) APPIMAGETOOL_FORCE_SIGNSet to 1 to fail build on signing error
Build with Signing SIGN=1 APPIMAGETOOL_SIGN_PASSPHRASE="your-passphrase" npm run tauri build
View Embedded Signature ./src-tauri/target/release/bundle/appimage/app_version_amd64.AppImage --appimage-signature
Validate Signature chmod +x validate-x86_64.AppImage
./validate-x86_64.AppImage your-app.AppImage
Note: AppImage does not auto-validate signatures. Users must manually verify.
macOS Signing and Notarization
Prerequisites
Apple Developer Program enrollment ($99/year)
Mac computer for code signing
Free accounts cannot notarize applications
Certificate Types Certificate Use Case Apple Distribution App Store submissions Developer ID Application Distribution outside App Store
Create Certificate
Generate Certificate Signing Request (CSR) from Keychain Access
Upload CSR at Apple Developer > Certificates, IDs & Profiles
Download and double-click .cer to install
Configuration {
"bundle" : {
"macOS" : {
"signingIdentity" : "Developer ID Application: Your Name (TEAM_ID)"
}
}
}
Environment Variables for CI/CD Variable Description APPLE_CERTIFICATEBase64-encoded .p12 certificate APPLE_CERTIFICATE_PASSWORDPassword for exported certificate APPLE_SIGNING_IDENTITYCertificate name in keychain
Notarization - Option 1: App Store Connect API (Recommended):
Variable Description APPLE_API_ISSUERIssuer ID APPLE_API_KEYKey ID APPLE_API_KEY_PATHPath to .p8 private key
Notarization - Option 2: Apple ID:
Variable Description APPLE_IDApple ID email APPLE_PASSWORDApp-specific password APPLE_TEAM_IDTeam identifier
Export Certificate for CI/CD
base64 -i certificate.p12 | pbcopy
Ad-Hoc Signing (Testing Only) For unsigned distribution or testing without Apple credentials:
{
"bundle" : {
"macOS" : {
"signingIdentity" : "-"
}
}
}
GitHub Actions Example - 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 Signing
Certificate Types Type SmartScreen Availability OV (Organization Validated) Builds reputation over time Before June 1, 2023 EV (Extended Validation) Immediate trust Required after June 1, 2023
Note: Certificates obtained after June 1, 2023 require EV certificates for immediate SmartScreen trust.
Configuration {
"bundle" : {
"windows" : {
"certificateThumbprint" : "A1B1A2B2A3B3A4B4A5B5A6B6A7B7A8B8A9B9A0B0" ,
"digestAlgorithm" : "sha256" ,
"timestampUrl" : "http://timestamp.sectigo.com"
}
}
}
Find Certificate Thumbprint
Open certificate details
Go to Details tab
Find "Thumbprint" field
Copy the hex string (remove spaces)
Common Timestamp URLs
http://timestamp.sectigo.com
http://timestamp.digicert.com
http://timestamp.globalsign.com
Convert Certificate to PFX openssl pkcs12 -export -in cert.cer -inkey private-key.key -out certificate.pfx
Environment Variables for CI/CD Variable Description WINDOWS_CERTIFICATEBase64-encoded .pfx file WINDOWS_CERTIFICATE_PASSWORDPFX export password
GitHub Actions Example - 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 Signing For cloud-based signing with Azure Key Vault:
Variable Description AZURE_CLIENT_IDAzure AD application client ID AZURE_CLIENT_SECRETAzure AD application secret AZURE_TENANT_IDAzure AD tenant ID
Configure in tauri.conf.json:
{
"bundle" : {
"windows" : {
"signCommand" : "relic sign --key azurekeyvault --file %1"
}
}
}
Azure Trusted Signing For Azure Code Signing service:
{
"bundle" : {
"windows" : {
"signCommand" : "trusted-signing-cli -e <endpoint> -a <account> -c <profile> %1"
}
}
}
Custom Sign Command For other signing tools or cross-platform builds:
{
"bundle" : {
"windows" : {
"signCommand" : "your-signing-tool --sign %1"
}
}
}
The %1 placeholder is replaced with the executable path.
Quick Reference: All Environment Variables
Android
ANDROID_KEY_ALIAS
ANDROID_KEY_PASSWORD
ANDROID_KEY_BASE64
iOS (Manual)
IOS_CERTIFICATE
IOS_CERTIFICATE_PASSWORD
IOS_MOBILE_PROVISION
iOS/macOS (API Key)
APPLE_API_ISSUER
APPLE_API_KEY
APPLE_API_KEY_PATH
macOS (Certificate)
APPLE_CERTIFICATE
APPLE_CERTIFICATE_PASSWORD
APPLE_SIGNING_IDENTITY
macOS (Apple ID Notarization)
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