mcpField
A
axiom-code-signing-ref

axiom-code-signing-ref

github.com/charleswiltgen開発1.2k56 回インストール今日更新
リポジトリ

axiom-code-signing-ref について

iOS/macOSのコード署名に関するコマンドラインとAPIのリファレンスです。証明書、プロビジョニングプロファイル、権限、Keychain、fastlane match、Xcodeビルド設定の操作方法をまとめています。

主な機能

  1. 01証明書の種類とコマンドの参照
  2. 02プロビジョニングプロファイルの確認
  3. 03権限の抽出と比較
  4. 04Xcode署名設定の参照
  5. 05fastlane matchとCIの例

活用シーン

  1. 01署名診断コマンドの確認
  2. 02CI用の一時Keychainの設定
  3. 03fastlane matchの構成
  4. 04Xcodeの書き出し設定の確認

インストール

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

$npx skills add https://github.com/charleswiltgen/axiom --skill axiom-code-signing-ref

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

詳細

コード署名 API リファレンス

iOS/macOS のコード署名に関する包括的な CLI および API リファレンスです。証明書の管理、プロビジョニングプロファイルの検査、エンタイトルメントの抽出、Keychain 操作、codesign の検証、fastlane match、Xcode のビルド設定を扱います。

クイックリファレンス

# Diagnostic flow — run these 3 commands first for any signing issue
security find-identity -v -p codesigning          # List valid signing identities
security cms -D -i path/to/embedded.mobileprovision  # Decode provisioning profile
codesign -d --entitlements - MyApp.app             # Extract entitlements from binary

証明書リファレンス

証明書の種類
種類用途有効期間アカウントあたりの最大数
Apple Development登録済みデバイスでのデバッグビルド1 年無制限(開発者ごと)
Apple DistributionApp Store および TestFlight への提出1 年アカウントあたり 3 件
iOS Distribution(レガシー)App Store への提出(Xcode 11 より前)1 年アカウントあたり 3 件
iOS Development(レガシー)デバッグビルド(Xcode 11 より前)1 年無制限
Developer ID ApplicationApp Store 以外での macOS 配布5 年アカウントあたり 5 件
Developer ID InstallermacOS パッケージの署名5 年アカウントあたり 5 件
Apple Push ServicesAPNs の .p12 証明書認証(レガシー)1 年App ID あたり 1 件
CSR の生成
# Generate Certificate Signing Request
openssl req -new -newkey rsa:2048 -nodes \
  -keyout CertificateSigningRequest.key \
  -out CertificateSigningRequest.certSigningRequest \
  -subj "/[email protected]/CN=Developer Name/C=US"

または、Keychain Access を使用します:Certificate Assistant → Request a Certificate From a Certificate Authority。

証明書の検査
# View certificate details (from .cer file)
openssl x509 -in certificate.cer -inform DER -text -noout

# View certificate from .p12
openssl pkcs12 -in certificate.p12 -nokeys -clcerts | openssl x509 -text -noout

# List certificates in Keychain with SHA-1 hashes
security find-identity -v -p codesigning

# Example output:
#   1) ABC123... "Apple Development: [email protected] (TEAMID)"
#   2) DEF456... "Apple Distribution: Company Name (TEAMID)"
#      2 valid identities found

# Find specific certificate by name
security find-certificate -c "Apple Distribution" login.keychain-db -p

# Check certificate expiration (pipe PEM output to openssl)
security find-certificate -c "Apple Distribution" login.keychain-db -p | openssl x509 -noout -enddate
証明書のインストール
# Import .p12 into Keychain (interactive — prompts for password)
security import certificate.p12 -k ~/Library/Keychains/login.keychain-db -P "$P12_PASSWORD" -T /usr/bin/codesign

# Import .cer into Keychain
security import certificate.cer -k ~/Library/Keychains/login.keychain-db

# For CI: import into temporary keychain (see CI section below)

プロビジョニングプロファイルのリファレンス

プロファイルの種類
種類含まれる内容用途
Development開発用証明書 + デバイス UDID + App ID + エンタイトルメント登録済みデバイスでのデバッグビルド
Ad Hoc配布用証明書 + デバイス UDID + App ID + エンタイトルメントTestFlight を使わずに特定のデバイスでテスト
App Store配布用証明書 + App ID + エンタイトルメント(デバイスリストなし)App Store および TestFlight への提出
Enterpriseエンタープライズ証明書 + App ID + エンタイトルメント(デバイスリストなし)社内配布(Enterprise プログラムのみ)
プロファイルの内容

プロビジョニングプロファイル(.mobileprovision)は、署名済み plist で、次の内容が含まれています。

├── AppIDName           — App ID name
├── ApplicationIdentifierPrefix  — Team ID
├── CreationDate        — When profile was created
├── DeveloperCertificates  — Embedded signing certificates (DER-encoded)
├── Entitlements        — Granted entitlements
│   ├── application-identifier
│   ├── aps-environment (development|production)
│   ├── com.apple.developer.associated-domains
│   ├── keychain-access-groups
│   └── ...
├── ExpirationDate      — When profile expires (1 year)
├── Name                — Profile name in Apple Developer Portal
├── ProvisionedDevices  — UDIDs (Development/Ad Hoc only)
├── TeamIdentifier      — Team ID array
├── TeamName            — Team display name
├── TimeToLive          — Days until expiration
├── UUID                — Unique profile identifier
└── Version             — Profile version (1)
プロビジョニングプロファイルのデコード
# Decode and display full contents
security cms -D -i path/to/embedded.mobileprovision

# Extract specific fields
security cms -D -i embedded.mobileprovision | plutil -extract Entitlements xml1 -o - -

# Check aps-environment (push notifications)
security cms -D -i embedded.mobileprovision | grep -A1 "aps-environment"

# Check expiration
security cms -D -i embedded.mobileprovision | grep -A1 "ExpirationDate"

# List provisioned devices (Development/Ad Hoc only)
security cms -D -i embedded.mobileprovision | grep -A100 "ProvisionedDevices"

# Check team ID
security cms -D -i embedded.mobileprovision | grep -A1 "TeamIdentifier"
プロファイルのインストール先
# Installed profiles (Xcode manages these)
~/Library/MobileDevice/Provisioning Profiles/

# List installed profiles
ls ~/Library/MobileDevice/Provisioning\ Profiles/

# Decode a specific installed profile
security cms -D -i ~/Library/MobileDevice/Provisioning\ Profiles/<UUID>.mobileprovision

# Find profile embedded in app bundle
find ~/Library/Developer/Xcode/DerivedData -name "embedded.mobileprovision" -newer . 2>/dev/null | head -5

# Install a profile manually (copy to managed directory)
cp MyProfile.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/

エンタイトルメントのリファレンス

一般的なエンタイトルメント
エンタイトルメントキー値
App IDapplication-identifierTEAMID.com.example.app
プッシュ通知aps-environmentdevelopment / production
App Groupscom.apple.security.application-groups["group.com.example.shared"]
Keychain Sharingkeychain-access-groups["TEAMID.com.example.keychain"]
Associated Domainscom.apple.developer.associated-domains["applinks:example.com"]
iCloudcom.apple.developer.icloud-container-identifiersコンテナ ID
HealthKitcom.apple.developer.healthkittrue
Apple Paycom.apple.developer.in-app-paymentsマーチャント ID
Network Extensionscom.apple.developer.networking.networkextension種類の配列
Siricom.apple.developer.siritrue
Sign in with Applecom.apple.developer.applesignin["Default"]
エンタイトルメントの .plist 形式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.com.example.shared</string>
    </array>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:example.com</string>
    </array>
</dict>
</plist>
抽出と比較
# Extract entitlements from signed app binary
codesign -d --entitlements - /path/to/MyApp.app

# Extract to file for comparison
codesign -d --entitlements entitlements.plist /path/to/MyApp.app

# Compare entitlements between app and provisioning profile
diff <(codesign -d --entitlements - MyApp.app 2>/dev/null) \
     <(security cms -D -i embedded.mobileprovision | plutil -extract Entitlements xml1 -o - -)

# Extract entitlements from .ipa
unzip -o MyApp.ipa -d /tmp/ipa_contents
codesign -d --entitlements - /tmp/ipa_contents/Payload/*.app

# Verify entitlements match between build and profile
codesign -d --entitlements - --xml MyApp.app  # XML format

CLI コマンドリファレンス

security コマンド
# --- Identity & Certificate ---

# List valid code signing identities
security find-identity -v -p codesigning
# -v: valid only, -p codesigning: code signing policy

# Find certificate by common name
security find-certificate -c "Apple Distribution" login.keychain-db -p
# -c: common name substring, -p: output PEM, keychain is positional arg

# Find certificate by SHA-1 hash
security find-certificate -Z -a login.keychain-db | grep -B5 "ABC123"

# --- Import/Export ---

# Import .p12 (with password, allow codesign access)
security import certificate.p12 -k login.keychain-db -P "$PASSWORD" -T /usr/bin/codesign -T /usr/bin/security

# Import .cer
security import certificate.cer -k login.keychain-db

# Export certificate to .p12
security export -t identities -f pkcs12 -k login.keychain-db -P "$PASSWORD" -o exported.p12

# --- Provisioning Profile Decode ---

# Decode provisioning profile (CMS/PKCS7 signed plist)
security cms -D -i embedded.mobileprovision

# --- Keychain Management ---

# Create temporary keychain (for CI)
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain

# Set as default keychain
security default-keychain -s build.keychain

# Add to search list (required for codesign to find certs)
security list-keychains -d user -s build.keychain login.keychain-db

# Unlock keychain (required in CI before signing)
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain

# Set keychain lock timeout (0 = never lock during session)
security set-keychain-settings -t 3600 -l build.keychain
# -t: timeout in seconds, -l: lock on sleep

# Allow codesign to access keys without UI prompt (critical for CI)
security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" build.keychain

# Delete keychain (CI cleanup)
security delete-keychain build.keychain
codesign コマンド
# --- Signing ---

# Sign with specific identity
codesign -s "Apple Distribution: Company Name (TEAMID)" MyApp.app
# -s: signing identity (name or SHA-1 hash)

# Sign with entitlements file
codesign -s "Apple Distribution" --entitlements entitlements.plist MyApp.app

# Force re-sign (overwrite existing signature)
codesign -f -s "Apple Distribution" MyApp.app

# Sign with timestamp (required for notarization)
codesign -s "Developer ID Application" --timestamp MyApp.app

# Deep sign (sign all nested code — frameworks, extensions)
codesign --deep -s "Apple Distribution" MyApp.app
# Warning: --deep is unreliable for complex apps. Sign each component individually.

# --- Verification ---

# Verify signature is valid
codesign --verify --verbose=4 MyApp.app

# Verify deep (check nested code)
codesign --verify --deep --strict MyApp.app

# Display signing information
codesign -dv MyApp.app
# Shows: Identifier, Format, TeamIdentifier, Signing Authority chain

# Display verbose signing info
codesign -dvvv MyApp.app

# Extract entitlements from signed binary
codesign -d --entitlements - MyApp.app
codesign -d --entitlements - --xml MyApp.app  # XML format
openssl コマンド

注:macOS には OpenSSL ではなく LibreSSL が付属しています。標準の macOS では、一部の openssl pkcs12 コマンドが「MAC verification failed」で失敗することがあります。必要に応じて brew install openssl で OpenSSL をインストールし、フルパス(/opt/homebrew/opt/openssl/bin/openssl)を使用してください。

# --- Certificate Inspection ---

# View .cer details
openssl x509 -in certificate.cer -inform DER -text -noout

# View .pem details
openssl x509 -in certificate.pem -text -noout

# Check certificate expiration
openssl x509 -in certificate.cer -inform DER -noout -enddate

# Extract public key
openssl x509 -in certificate.cer -inform DER -pubkey -noout

# --- PKCS12 (.p12) ---

# Extract certificate from .p12
openssl pkcs12 -in certificate.p12 -nokeys -clcerts -out cert.pem

# Extract private key from .p12
openssl pkcs12 -in certificate.p12 -nocerts -nodes -out key.pem

# Create .p12 from cert + key
openssl pkcs12 -export -in cert.pem -inkey key.pem -out certificate.p12

# Verify .p12 contents
openssl pkcs12 -info -in certificate.p12 -nokeys

Xcode ビルド設定リファレンス

設定キー値
コード署名方式CODE_SIGN_STYLEAutomatic / Manual
署名 IDCODE_SIGN_IDENTITYApple Development / Apple Distribution / iPhone Distribution
開発チームDEVELOPMENT_TEAMチーム ID(英数字 10 文字)
プロビジョニングプロファイルPROVISIONING_PROFILE_SPECIFIERプロファイル名または UUID
プロビジョニングプロファイル(レガシー)PROVISIONING_PROFILEプロファイル UUID(非推奨。SPECIFIER を使用)
その他のコード署名フラグOTHER_CODE_SIGN_FLAGS--timestamp / --options runtime
コード署名エンタイトルメントCODE_SIGN_ENTITLEMENTS.entitlements ファイルへのパス
Hardened Runtime を有効化ENABLE_HARDENED_RUNTIMEYES / NO(macOS)
xcodebuild の署名オーバーライド
# Automatic signing
xcodebuild -scheme MyApp -configuration Release \
  CODE_SIGN_STYLE=Automatic \
  DEVELOPMENT_TEAM=YOURTEAMID

# Manual signing
xcodebuild -scheme MyApp -configuration Release \
  CODE_SIGN_STYLE=Manual \
  CODE_SIGN_IDENTITY="Apple Distribution: Company Name (TEAMID)" \
  PROVISIONING_PROFILE_SPECIFIER="MyApp App Store Profile"

# Archive for distribution
xcodebuild archive -scheme MyApp \
  -archivePath build/MyApp.xcarchive \
  CODE_SIGN_STYLE=Manual \
  CODE_SIGN_IDENTITY="Apple Distribution" \
  PROVISIONING_PROFILE_SPECIFIER="MyApp App Store"

# Export .ipa from archive
xcodebuild -exportArchive \
  -archivePath build/MyApp.xcarchive \
  -exportOptionsPlist ExportOptions.plist \
  -exportPath build/ipa
ExportOptions.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store</string>
    <key>teamID</key>
    <string>YOURTEAMID</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>signingCertificate</key>
    <string>Apple Distribution</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>com.example.myapp</key>
        <string>MyApp App Store Profile</string>
    </dict>
    <key>uploadSymbols</key>
    <true/>
</dict>
</plist>

エクスポート方式の値:app-store、ad-hoc、enterprise、development、developer-id。


fastlane match リファレンス

セットアップ
# Initialize match (interactive — choose storage type)
fastlane match init
# Options: git, google_cloud, s3, azure_blob

# Generate certificates + profiles for all types
fastlane match development
fastlane match appstore
fastlane match adhoc
Matchfile
# fastlane/Matchfile
git_url("https://github.com/your-org/certificates.git")
storage_mode("git")

type("appstore")  # Default type

app_identifier(["com.example.app", "com.example.app.widget"])
username("[email protected]")
team_id("YOURTEAMID")

# For multiple targets with different profiles
# for_lane(:beta) do
#   type("adhoc")
# end
使用方法
# Generate or fetch development certs + profiles
fastlane match development

# Generate or fetch App Store certs + profiles
fastlane match appstore

# CI: read-only mode (never create, only fetch)
fastlane match appstore --readonly

# Force regenerate (revokes existing)
fastlane match nuke distribution  # Revoke all distribution certs
fastlane match appstore           # Generate fresh
# Also: nuke development, nuke enterprise
CI 用環境変数
MATCH_GIT_URL="https://github.com/your-org/certificates.git"
MATCH_PASSWORD="encryption_password"       # Encrypts the repo
MATCH_KEYCHAIN_NAME="fastlane_tmp"
MATCH_KEYCHAIN_PASSWORD="keychain_password"
MATCH_READONLY="true"                      # CI should never create certs
FASTLANE_USER="[email protected]"
FASTLANE_TEAM_ID="YOURTEAMID"
CI Fastfile の例
# fastlane/Fastfile
lane :release do
  setup_ci  # Creates temporary keychain

  match(
    type: "appstore",
    readonly: true,  # Critical: never create certs in CI
    keychain_name: "fastlane_tmp",
    keychain_password: ""
  )

  build_app(
    scheme: "MyApp",
    export_method: "app-store"
  )

  upload_to_app_store(skip_metadata: true, skip_screenshots: true)
end

CI 用キーチェーン管理

CI キーチェーンの完全なセットアップスクリプト
#!/bin/bash
set -euo pipefail

KEYCHAIN_NAME="ci-build.keychain-db"
KEYCHAIN_PASSWORD="ci-temporary-password"

# 1. Create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME"

# 2. Add to search list (MUST include login.keychain-db or it disappears)
security list-keychains -d user -s "$KEYCHAIN_NAME" login.keychain-db

# 3. Unlock keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME"

# 4. Prevent keychain from locking during build
security set-keychain-settings -t 3600 -l "$KEYCHAIN_NAME"

# 5. Import signing certificate
security import "$P12_PATH" -k "$KEYCHAIN_NAME" -P "$P12_PASSWORD" \
  -T /usr/bin/codesign -T /usr/bin/security

# 6. Allow codesign access without UI prompt (CRITICAL)
# Without this, CI gets errSecInternalComponent
security set-key-partition-list -S apple-tool:,apple: -s \
  -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME"

echo "Keychain ready for code signing"
CI キーチェーンのクリーンアップスクリプト
#!/bin/bash
# Run in CI post-build (always, even on failure)

KEYCHAIN_NAME="ci-build.keychain-db"

# Delete temporary keychain
security delete-keychain "$KEYCHAIN_NAME" 2>/dev/null || true

# Restore default keychain search list
security list-keychains -d user -s login.keychain-db
GitHub Actions の例
- name: Install signing certificate
  env:
    P12_BASE64: ${{ secrets.P12_BASE64 }}
    P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
    KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
    PROVISION_PROFILE_BASE64: ${{ secrets.PROVISION_PROFILE_BASE64 }}
  run: |
    # Decode certificate
    echo "$P12_BASE64" | base64 --decode > certificate.p12

    # Decode provisioning profile
    echo "$PROVISION_PROFILE_BASE64" | base64 --decode > profile.mobileprovision

    # Create and configure keychain
    security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
    security list-keychains -d user -s build.keychain login.keychain-db
    security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
    security set-keychain-settings -t 3600 -l build.keychain
    security import certificate.p12 -k build.keychain -P "$P12_PASSWORD" \
      -T /usr/bin/codesign -T /usr/bin/security
    security set-key-partition-list -S apple-tool:,apple: -s \
      -k "$KEYCHAIN_PASSWORD" build.keychain

    # Install provisioning profile
    mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
    cp profile.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/

- name: Cleanup keychain
  if: always()
  run: security delete-keychain build.keychain 2>/dev/null || true
Xcode Cloud

Xcode Cloud は署名を自動的に管理します:

  • 証明書は Apple が管理するため、手動で証明書を管理する必要はありません
  • プロビジョニングプロファイルは Developer Portal から取得されます
  • Xcode → クラウドワークフロー設定で署名を構成します
  • 必要に応じて、カスタムキーチェーン操作に ci_post_clone.sh を使用します

APNs 認証:.p8 と .p12

項目.p8(トークンベース).p12(証明書ベース)
有効期間有効期限なし(無効にするには失効させます)1 年(毎年更新が必要です)
適用範囲チーム内のすべてのアプリ単一の App ID
チームごとの最大数2 個のキーApp ID ごとに 1 個の証明書
セットアップの複雑さ低い(すべてのアプリで 1 個のキーを使用)高い(アプリごとに証明書が必要)
サーバー実装JWT トークンの生成が必要TLS クライアント証明書
推奨はい(Apple の現在の推奨方式)レガシー(引き続きサポートされています)
.p8 キーの使用方法
# Generate JWT for APNs (simplified — use a library in production)
# Header: {"alg": "ES256", "kid": "KEY_ID"}
# Payload: {"iss": "TEAM_ID", "iat": TIMESTAMP}
# Sign with .p8 private key

# JWT is valid for 1 hour — cache and refresh before expiry
.p12 証明書の使用方法
# Send push with certificate authentication
curl -v \
  --cert-type P12 --cert apns-cert.p12:password \
  --header "apns-topic: com.example.app" \
  --header "apns-push-type: alert" \
  --data '{"aps":{"alert":"Hello"}}' \
  --http2 https://api.sandbox.push.apple.com/3/device/$TOKEN
# Production: https://api.push.apple.com/3/device/$TOKEN

エラーコードリファレンス

security コマンドのエラー
エラーコード原因
errSecInternalComponent-2070キーチェーンがロックされているか、set-key-partition-list が呼び出されていません
errSecItemNotFound-25300検索対象のキーチェーンに証明書/キーがありません
errSecDuplicateItem-25299証明書はすでにキーチェーンに存在します
errSecAuthFailed-25293キーチェーンのパスワードが間違っています
errSecInteractionNotAllowed-25308キーチェーンがロックされており、UI を利用できません(ロック解除されていない CI)
errSecMissingEntitlement-34018アプリにキーチェーンアクセスに必要なエンタイトルメントがありません
codesign のエラー
エラー原因修正方法
No signing certificate foundキーチェーンに有効な ID がありません証明書をインポートするか、有効期限を確認します
ambiguous (matches ...)一致する ID が複数あります完全な ID 名または SHA-1 ハッシュを指定します
not valid for use in ...証明書の種類が一致しません(開発用と配布用)正しい種類の証明書を使用します
a sealed resource is missing or invalid署名後にリソースが変更されましたすべての変更後に再署名します
invalid signature (code or signature have been modified)署名後にバイナリが改ざんされました再署名するか、再ビルドします
ITMS(App Store アップロード)エラー
コードエラー原因対処方法
ITMS-90035無効な署名証明書の種類が誤っているか、有効期限が切れています有効な Apple Distribution 証明書で署名します
ITMS-90161無効なプロビジョニングプロファイルプロファイルがアプリと一致していませんDeveloper Portal でプロファイルを再生成します
ITMS-90046無効なコード署名エンタイトルメントエンタイトルメントがプロファイルに含まれていませんポータルで機能を追加し、プロファイルを再生成します
ITMS-90056プッシュ通知エンタイトルメントがありませんプロファイルに aps-environment が含まれていませんプッシュ通知機能を有効にします
ITMS-90174プロビジョニングプロファイルがありませんプロファイルが埋め込まれていません正しい署名設定でアーカイブします
ITMS-90283無効なプロビジョニングプロファイルプロファイルの有効期限が切れています新しいプロファイルをダウンロードします
ITMS-90426無効な Swift サポートSwift ライブラリが正しく署名されていません(手動ではなく)Xcode のオーガナイザーを使って書き出します
ITMS-90474バンドル識別子がありませんバンドル ID がプロファイルと一致していませんXcode、ポータル、プロファイルの間でバンドル ID を一致させます
ITMS-90478無効な Team IDTeam ID が一致していませんDEVELOPMENT_TEAM ビルド設定を確認します
ITMS-90717無効な App Store 配布証明書App Store 用に開発証明書を使用していますApple Distribution 証明書に切り替えます

リソース

WWDC: 2021-10204, 2022-110353

ドキュメント: /security, /bundleresources/entitlements, /xcode/distributing-your-app

スキル: axiom-code-signing, axiom-code-signing-diag

コメント