お久しぶりです。エンジニアの横田です。
最近、リリース済みのiOSアプリの保守を引き継ぐ必要性がでてきたのですが僕の環境がWindowsなので開発がしづらいので、iOSアプリをビルドしてApple Store ConnectにTestFlightとしてアップロードするまでの流れをWindows環境のみで行えるように調査していました。

前提条件

  1. UnityプロジェクトがGitリポジトリに保存されていること。
    • GitHub、GitLab、Bitbucket、などのGitサーバー。
  2. Apple Developerアカウント(有料)を持っていること。
    • Provisioning Profile、Certificateが必要。
  3. Unityサービスにプロジェクトをリンク済みであること。

今回の記事では上記の項目については触れません。上記3つの条件をクリアしている前提で進めていきたいと思います。

Unity Cloud Build で iOS アプリをビルドするために必要なもの

ファイル種別説明用途
.keyあなたが作った秘密鍵Apple の証明書と対になる
.csrApple証明書の申請に
必要なリクエスト
Apple Developer サイトに提出
.cer / .crtApple から取得する
開発/配布用の証明書
.key と組み合わせて .p12 を作る
.p12.key + .cer をまとめた
証明書ファイル
Unity Cloud Build にアップロード
.mobileprovisionApple Developerサイトで
作成するプロビジョニング
プロファイル
Unity Cloud Build にアップロード

iOSアプリをビルドする上で一番やっかいなのは証明書が必要な事なのですが、この証明書を発行する為に上記のとおりいろんな拡張子のファイルを生成しないといけません。かなり面倒です・・

最終的に Unity Cloud Build にアップロードするもの

  • ios_dev.p12:署名証明書(.key + .cerをまとめたもの)
  • ios_dev.p12 のパスワード
  • XXXXX.mobileprovision:プロビジョニングプロファイル

Unity Cloud Buildするのに必要なものは上記の3つです。
プロビジョニングプロファイルを生成する過程で、先のいろんな種類の証明書ファイルが必要になってきます。

手順

  1. OpenSSLをWindowsにインストール。
  2. WindowsでOpenSSLコマンドで(.key)ファイルを生成。
  3. WindowsでOpenSSLコマンドで(.key)ファイルを元に(.csr)ファイルを生成。
  4. Apple Developerサイトで(.csr)をアップロードして(.cer)ファイルを生成後、ダウンロード。
  5. WindowsでOpenSSLコマンドで(.cer)ファイルを元に(.crt)ファイルを生成。
  6. WindowsでOpenSSLコマンドで(.key)ファイルと(.crt)ファイルを元にパスワードも設定して(.p12)ファイルを生成。
  7. Apple Developerサイトでアプリに対応するApp IDを作成する。
  8. Apple Developerサイトにp12をアップしてプロビジョニングプロファイル(.mobileprovision)を作成。
  9. Unity Cloud Buildでビルド。
  10. ビルド後のipaファイルをApple Store ConnectにTestFlightとしてアップロード。

おおまかな流れは上記のようになります。順を追って説明していきます。

Windows環境のみで署名証明書(.p12)とプロビジョニングプロファイル(.mobileprovision)を作る

① OpenSSLをインストール

  1. Windows用OpenSSLを以下からインストールします。
    https://slproweb.com/products/Win32OpenSSL.html
    • 「Win64 OpenSSL v3.x.x Light」版でOK
    • インストール中、「The Windows system directory」にインストールを選んでOK
  2. OpenSSLコマンドを使うために環境変数 PATH にOpenSSLのパスを追加します。
    • Windowsの検索で「環境変数」と入力 → 「環境変数の編集」を開きます。
    • システム環境変数またはユーザー環境変数の「Path」を編集します。
    • OpenSSLの bin フォルダを 新規追加。
    • 僕の環境の場合は「C:\Program Files\OpenSSL-Win64\bin」でした。

  1. OKで閉じて、PowerShellまたはコマンドプロンプトを再起動します。
    • 動作確認の為に、下記のコマンドを入力。

      openssl version
    • OpenSSLのバージョン(例:OpenSSL 1.1.1w など)が表示されれば成功です!
  2. OKで閉じて、PowerShellまたはコマンドプロンプトを再起動します。

② Windowsで秘密鍵(.key)と証明書署名要求(.csr)を作成

  1. コマンドプロンプトまたはPowerShellを開いて、以下を実行すると実行ディレクトリ内に ios_dev.key というファイルが作成されます。

    openssl genrsa -out ios_dev.key 2048
  1. コマンドプロンプトまたはPowerShellを開いて、以下を実行すると実行ディレクトリ内に ios_dev.csr というファイルが作成されます。

    openssl req -new -key ios_dev.key -out ios_dev.csr
    • 実行時に「国名」や「組織名」などいくつか質問されますが全部英数字で入力して、Enterキーで進めてOKです
      特に正確である必要はありません。(Appleに見せるわけではない)→ 参考「OpenSSLでCSR作成」
  2. 質問される項目は以下の通りです。
    • Country Name (2 letter code) [AU]:
      [例] JP (日本) ※空白でOK。エンターのみ入力。
    • State or Province Name (full name) [Some-State]:
      [例] Kyoto (都道府県名) ※空白でOK。
    • Locality Name (eg, city) []:
      [例] Kyoto-shi (市区町村名) ※空白でOK。
    • Organization Name (eg, company) [Internet Widgits Pty Ltd]:
      [例] 1-10,Inc.(組織名) ※空白でOK。
    • Organizational Unit Name (eg, section) []:
      ※空白でOK。エンターのみ入力。
    • Common Name (e.g. server FQDN or YOUR name) []:
      あなたの名前(Apple Developerに登録した名義)
    • Email Address []:
      [例] oooo@1-10.com (メールアドレス) ※空白でOK。
    • A challenge password []:
      ※空白でOK。
    • An optional company name []:
      ※空白でOK。

このファイルはApple証明書の申請に必要でApple Developer サイトにアップロードする為のファイルです。

③ Apple Developer サイトで証明書(.cer)を作成

  1. Apple Developer サイトにログインします。
    https://developer.apple.com/account/
  2. Certificates, Identifiers & Profiles」→「Certificates」へ移動。


  3. Certificates 横の「+」ボタンで新しい証明書を作成。
  4. App Store Connect経由でTestFlightに載せるに
    iOS Distribution (App Store Connect and Ad Hoc)
    を選択して Continue をクリック。
  5. 先ほど生成した(.csr)ファイルをアップロードして Continue をクリック。
  1. Apple が証明書(.cer)を発行してくれるのでダウンロード。
    (例:ios_distribution.cer)


④ Windowsで(.crt)ファイルと証明書署名要求(.p12)ファイルを作成

  1. コマンドプロンプトまたはPowerShellを開いてios_distribution.cer ファイルが置いてあるフォルダ内で以下を実行すると、実行ディレクトリ内に ios_dev.crt というファイルが作成されます。

    openssl x509 -in ios_distribution.cer -inform DER -out ios_dev.crt
  2. ios_dev.keyios_dev.crt ファイルが置いてあるフォルダ内で以下を実行すると、実行ディレクトリ内に ios_dev.p12 というファイルが作成されます。※実行時にパスワードを設定してください
    (Unity Cloud Build にアップロード時に必要です)


    openssl pkcs12 -export -inkey ios_dev.key -in ios_dev.crt -out ios_dev.p12 -passout pass:yourpassword

⑤ アプリに対応する App ID を作成

  1. 引き続きApple Developer サイトで「Certificates, Identifiers & Profiles」へ進みます。
  2. 左のサイドバーにある「Identifiers」セクションを選びます。
  3. Identifiers 横の 「+」ボタン をクリックして新規作成。
  4. App IDs を選択して Continue をクリック。


  5. App を選択して Continue をクリック。


  6. DescriptionBundle ID を入力して Continue をクリック。
    例 :
    Description : for development AR applications
    Bundle ID : com.1-10.tesapp 

    ※Wildcardを選択してcom.1-10.testapp.*みたいにすると後々どこかでつまづく。(どこでつまづくかは忘れた・・)僕がやり方が間違ってるだけの気がするけど、*を使ってもつまづかないやり方わかる人は教えてください、、

  7. 最後に Register をクリック。

⑥ プロビジョニングプロファイル(.mobileprovision)を作成

必要条件(作成前の準備)

必須項目説明
Apple Developer アカウント有料の「Apple Developer Program」登録が必要です($99/年)
証明書(.cer)Apple Developer サイト上で「証明書(Certificate)」を作成済みであること
App IDアプリに対応する App ID を作成しておく
デバイス
(開発用のみ)
実機で開発する場合は、そのデバイスUDIDが登録されている必要があります(開発用プロファイルの場合)
  1. 引き続きApple Developer サイトで「Certificates, Identifiers & Profiles」へ進みます。
  2. 左のサイドバーにある「Profiles」セクションを選びます。
  3. Profiles 横の 「+」ボタン をクリックして新規作成。
  4. プロファイルの種類を選択。今回は Distribution App Store Connect を選択して Continue をクリック。



  5. あらかじめ作っておいた App ID を選びます。
    (アプリのバンドルIDに対応)
  1. 証明書を選択して「Continue」。
    先ほど証明書(.cer)を作成したと思いますが、その時の証明書がここに表示されているはずなので、それを選んでください。
    今回作ったのはiOS Distributionです。
    これはUnity Cloud Build で使う .p12 のベースとなった証明書です。
    チェックを入れましょう。
    (例:1-10, INC. (iOS Distribution)
    ここで表示される証明書の一覧にあなたが .p12 を作った元の証明書があることが超重要!



  2. プロファイルに名前をつけて「Generate」をクリック。
    例: MyApp_DevProfile_2025



  3. プロビジョニングファイル(.mobileprovision)をダウンロード。
    このファイルを Unity Cloud Build にアップロードします。



Unity Cloud Buildに必要な証明書の用意は以上です。お疲れ様でした。
記事がすごく長くなってしまうので、Unity Cloud Buildについての記事は次回に分けようとおもいます。
「Windows環境のみでiOSアプリをビルドしてTestFlightに載せる方法 その2」
へと続きます。



毎回ポチポチコマンドを叩いたりするのが面倒なので、上記のOpenSSLコマンドをそれぞれバッチファイル化しました。
githubにあげておきましたのでご自由にお使いください。
https://github.com/1-10/CertificateGenerationTool



■ワントゥーテンでは中途採用募集中です!

1→10(ワントゥーテン)のカルチャーや、作品のクリエイティブに共感し、自身のより高い成長を求めている方からのご応募をお待ちしています!