Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CA.unity#7 Windows/Macの証明書の取得と、署名済みインストーラーを作成するビルドプロセスの紹介

CA.unity#7 Windows/Macの証明書の取得と、署名済みインストーラーを作成するビルドプロセスの紹介

CA.unity #7での登壇資料です。
https://meetup.unity3d.jp/jp/events/1405

Windows/Macの証明書の取得と、署名済みインストーラーを作成するビルドプロセスの紹介

Dara / Shidara Kota

September 16, 2023
Tweet

More Decks by Dara / Shidara Kota

Other Decks in Technology

Transcript

  1. 設楽広太(だーら). @3tdara Flamers共同創業者 CTO Unity / C# / Rails /

    AWS 2019年、大学休学中にFlamersを共同創業。 創業事業は「長期インターンサイトVoil」、開発から営業、学生の キャリアアドバイザーなどを担当。 2022夏より新規事業として「恋愛メタバースMemoria」を立ち上 げ、開発チームを率いている。 自己紹介 入って ます! 作った曲!聴いて ください!
  2. $ ls -l@ ~/Downloads/AppName.app/Contents/MacOS/AppName -rwxrwxrwx@ 1 UserName staff 115638 2

    17 18:55 /Users/UserName/Downloads/AppName.app/Contents/MacOS/AppName com.apple.quarantine 57 署名が無いことの問題 起動時にセキュリティ警告が出る Windowsは→で実行を選択したら起動可能 Macはターミナルでコマンド入力が必要 Webブラウザでダウンロード時にも警告がでる WindowsのSmartScreen警告 この問題が発生するのは、インターネット経由での配布(ギガファイル便やGoogleドライ ブ経由)や、Airdrop経由の場合。SSDを相手に渡してコピーさせるときは発生しない。 ↑ この属性が原因で開けない → 取り除くコマンドを打つ必要がある
  3. 申請手続き Webから申請 → 書類を送付 → 電話確認を受ける → USBを受け取って完了 Webから申請 書類送付

    (申請書類、履歴事項 全部証明書) ↑で必要になるD-U-N-Sナンバーは知らないうちに取得済み。 「東京商工リサーチ」に電話相談 電話確認 USBを受け取る 期間: 3週間ほど
  4. > signtool sign /tr http://timestamp.comodoca.com/rfc3161 /td sha256 /fd sha256 /a

    /n "証明書の発行者名" "署名するファイルのパス" Done Adding Additional Store Successfully signed: "署名するファイルのパス" 署名 最終的に、PowerShellでsignコマンドを打ち、SafeNetにパスワードを入れる 前段階の準備として... ・Windows SDKに含まれるsigntool.exeのインストール ・SafeNet Authenticationクライアントのインストール
  5. Apple Developer Programへの登録 Apple Developerアプリ(Mac)で申請 法人の場合はD-U-N-S番号が必要(東京商工リサーチに電話し確認) Appleからメールが送られ、登記情報をPDFで送信する Appleから電話で確認され、審査完了 🎉 Apple

    Developerへ登録 ローカルMacで証明書の作成 Webサイトから、証明書やIDなどを登録 → Developer ID Installer: インストーラー署名用 Developer ID Application: アプリ本体署名用
  6. 権限をまとめた.entitlementの作成 XCodeで作ると楽 (Unityアプリとは無関係) 署名と申請 # .appに署名 > codesign (option) “Developer

    ID Application: チーム名等” .entitlementファイルのpath .appのpath # .pkg化と署名 > productbuild .appのpath 略 --sign "Developer ID Installer: チーム名 等" pkgのpath # Appleに提出(数分でaccepted) > Xcrun notarytool submit pkgのpath "自分のApple ID" "パスワード" "チーム ID" --wait コマンドは簡略化
  7. <?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>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.device.audio-input</key> <true/> <key>com.apple.security.files.user-selected.read-only</key> <true/> <key>com.apple.security.network.client</key> <true/> <key>com.apple.security.network.server</key> <true/> <key>com.apple.security.cs.allow-unsigned-executable-memory</key> <true/> </dict> </plist> .entitlementファイル
  8. Define Symbolの変更 XR Plug-inの変更 Release / Testの変更(参照する AddressableのS3バケットなど) Androidは署名 Switch

    Platformによる弊害を防ぐた め根本から別ディレクトリにしている Self-Hosted Runnerでのビルド Windows Mac Android iOS 前処理 ビルド to 署名 & インストーラー アップロード 時間のかかる処理は、Unity/C#から 実行せずShellScriptを直接実行 Aborting batchmode due to failure: Timeout after 300 seconds while waiting async operations to finish