App Store Signing Setup
Use for new signing assets, rotation, or team sharing.
Preconditions
Auth is configured (asc auth login or ASC_* env vars), bundle id/platform are known, and certificate creation has a CSR or will use --generate-csr.
Workflow
- Bundle ID:
asc bundle-ids list --paginateasc bundle-ids create --identifier "com.example.app" --name "Example" --platform IOS
- Capabilities:
asc bundle-ids capabilities list --bundle "BUNDLE_ID"asc bundle-ids capabilities add --bundle "BUNDLE_ID" --capability ICLOUD- use
--settings '[{"key":"ICLOUD_VERSION","options":[{"key":"XCODE_13","enabled":true}]}]'when required
- Certificate:
asc certificates list --certificate-type IOS_DISTRIBUTIONasc certificates create --certificate-type IOS_DISTRIBUTION --csr "./cert.csr"asc certificates create --certificate-type IOS_DISTRIBUTION --generate-csr --key-out "./signing/dist.key" --csr-out "./signing/dist.csr"
- Profile:
asc profiles create --name "AppStore Profile" --profile-type IOS_APP_STORE --bundle "BUNDLE_ID" --certificate "CERT_ID"- development/ad-hoc also pass
--device "DEVICE_ID"
- Download, inspect, install:
asc profiles download --id "PROFILE_ID" --output "./profiles/AppStore.mobileprovision"asc profiles inspect --path "./profiles/AppStore.mobileprovision" --output tableasc profiles inspect --path "./profiles/AppStore.mobileprovision" --entitlements --output markdownasc profiles local install --path "./profiles/AppStore.mobileprovision"asc profiles local list --output table
Rotation
asc certificates revoke --id "CERT_ID" --confirmasc profiles delete --id "PROFILE_ID" --confirmasc profiles local clean --expired --dry-runasc profiles local clean --expired --confirm
Encrypted Sync
Use asc signing sync as a lightweight match-style encrypted git store.
asc signing sync push \
--bundle-id "com.example.app" \
--profile-type IOS_APP_STORE \
--repo "git@github.com:team/certs.git" \
--password "$MATCH_PASSWORD"
asc signing sync pull \
--repo "git@github.com:team/certs.git" \
--password "$MATCH_PASSWORD" \
--output-dir "./signing"
--password falls back to ASC_MATCH_PASSWORD. Pull writes files only; keychain import/profile install is separate.
Notes
Check --help for enum values. Use --paginate for large accounts. --certificate accepts comma-separated IDs. Device management uses asc devices with UDID. Local profile commands operate on disk, not ASC API resources.