【結論】XcodeでApp Store Connectへアップロードする際、Missing or invalid signature (code: 90034) エラーが発生した場合の主な原因は、PRODUCT_NAME に日本語(全角文字)が指定されていることです。表示名を日本語にしつつビルド成果物の物理名・実行ファイル名を英数字(PRODUCT_NAME = DokodemoTerminal)に変更し、表示名は CFBundleDisplayName(または InfoPlist.xcstrings)で指定することで解決します。

この記事では、署名設定の確認から Apple Distribution 証明書の確認、CLIでのIPAエクスポート検証、そして最終的に原因となった PRODUCT_NAME の修正手順まで、トラブルシューティングの全ステップを詳しく解説します。

1. 発生したエラー(ITMS-90034)と現象

アプリを App Store Connect へアップロードしようとした際、以下のエラーが発生しました。

Missing or invalid signature. The bundle 'com.shopkoyomi.dokodemo-terminal' at bundle path 'Payload/どこでもターミナル.app' is not signed using an Apple submission certificate.
The server's response was: 'code = 90034;'

App Store Connect 側からは「Apple提出用の証明書で署名されていない」と判定されて拒否される状態でした。

2. 署名設定と証明書の基本チェック

まずエラーメッセージを踏まえ、一般的な問題から確認を行いました。

  • Automatically manage signing が ON になっているか
  • Release Archive が選択されているか
  • Manage Certificates に Apple Distribution 証明書が存在するか

確認したところ、Keychain / Xcode アカウント内に Apple Development のみで Apple Distribution 証明書が作成されていないことが判明したため、証明書を新しく作成・追加しました。

3. XcodeGen環境での署名固定とScheme設定の罠

プロジェクトファイルを XcodeGen で管理している場合、project.yml の設定で開発用署名が強制指定されていないか注意が必要です。

CODE_SIGN_IDENTITY: "iPhone Developer"

上記の設定が入っていると、Release Archive 時にも開発用署名が適用されてしまいます。settingPresets: none や明確な scheme 定義を行い、自動生成時の挙動を修正しました。

4. CLI(xcodebuild / Transporter)でのIPAエクスポート検証

Xcode Organizer 経由のアップロード失敗を回避・検証するため、CLI(xcodebuild -exportArchive)で IPA を生成し、codesign で検証を実施しました。

codesign -dv --verbose=4 Payload/アプリ名.app

ローカルでの検証結果は Authority=Apple Distribution となり正常に見えたものの、Apple 公式の Transporter アプリ で検証すると同様の 90034 エラーで弾かれる状態が続きました。

5. 【真因】PRODUCT_NAMEの日本語指定と解決策

ローカル署名検証は通るのに Apple サーバー側で拒否される理由を調査した結果、エラーログ内のパスに原因がありました。

Payload/どこでもターミナル.app

ビルド成果物の物理ファイル名および実行ファイル名(PRODUCT_NAME)に日本語が含まれていたため、App Store Connect 側の署名検証システムで署名無効(invalid signature)とみなされていたことが真因でした。

正しい設定手順

アプリの表示名(ホーム画面等の名称)を日本語に保ったまま、物理名のみを英数字に変更します。

  • PRODUCT_NAME: DokodemoTerminal(英数字に変更)
  • CFBundleDisplayName (ja): どこでもCLI(ユーザー向け日本語表示名)
  • CFBundleDisplayName (en): Dokodemo CLI(英語表示名)

この変更を行った上で再 Archive し、App Store Connect へアップロードしたところ、即座に検証・アップロードが正常完了しました。

6. まとめと教訓

日本語のアプリ名を付ける場合でも、PRODUCT_NAME(.appの物理名・実行ファイル名)は必ず英数字に設定し、表示名は CFBundleDisplayName で設定するのが安全なマルチリンガル・App Store提出設計です。