XCBLOG
On 10月 31, 2021 by adminiOS Code Signing Tutorials
このチュートリアルシリーズは、Part-1になります。 このシリーズでは、iOS コード署名プロセスの基本的なことを説明します。 このシリーズのすべての投稿は、以下のリンクからご覧いただけます
- iOS Code Signing: 1. 入門
- iOS Code Signing: 2. Certificate Signing Requests
- iOS Code Signing: 3. Certificates
- iOS Code Signing: 4. Provisioning Profiles
- iOS Code Signing: 5. Signing iOS App
****************
ジェイルブレイクしたiOSデバイスでなければ、信頼できる開発者が署名したアプリしか実行されません。 iOS エンジニアであれば、どこかでコード署名と格闘したことがあるのではないでしょうか。 コード署名はiOS開発者にとって苦痛で面倒な作業の一つですが、コード署名活動から逃げるわけにはいきません。 コード署名とプロビジョニングプロファイルは、開発者がコード署名の基本を完全に理解するまで、ずっと悩みの種であり続けるでしょう。 この記事は、コード署名プロセスの利点と制限について説明する入門的な記事です。 Apple がコード署名プロセスに関するドキュメントを公開しているほか、オンラインで複数のリソースを入手できますが、まだ謎のままです。 このシリーズでは、コード署名に必要なものから実際のコード署名プロセスまで、コード署名プロセスをゼロから理解することを目指します。 また、GUIやコマンドラインでの処理方法についても、可能な限り探っていきます。 iOS開発用の証明書を取得するためのCertificate Signing Requestsから始まり、証明書とその内部パーツについて学びます。 証明書を理解した後、プロビジョニングプロファイルを深く掘り下げ、最後にコード署名プロセスを理解します。
このシリーズは、Web や Apple のドキュメントをいくつか調査して、私自身の言葉や言語で書かれています。 最終回では、これらの参考資料をすべて網羅しました。 また、読者がコンセプトを理解できるように、Apple Developer portalとXcodeのスクリーンショットをいくつか添付しました。 機密事項はすべて隠すようにしましたが、もし間違って公開しているものがあれば、ハッキングしないでください 🙂
Code Signing
Apple による iOS アプリのコード署名に入る前に、一般的にコード署名とは何かを探っておきましょう。 実生活では、私たちはさまざまな物事に対してさまざまな契約書に署名します。 なぜ私たちはそのような契約に署名するのでしょうか。署名は私たちにとってどのような意味があり、なぜそれが重要なのでしょうか。 それは、契約書に署名することで、私たちを法的に保護し、契約書に書かれている条件が、契約が成立している間は変更されないという信頼を得ることができるからです。 また、署名は、契約書が詐欺師からではなく、信頼できる当局から発行されたものであるという安全性を保証するものでもあります。
同様に、コード署名は、あらゆる形式のコードにデジタルで署名するプロセスで、誰がコードを書いたかを確認し、署名されたときにコードが変更されたり破損したりしていないことを保証するものである。 コード署名は、暗号ハッシュを使用して、ソフトウェアコードの真正性と完全性を検証する。 ソフトウェアの世界では、コード署名は作者の身元、コードの完全性、ビルドシステム、バージョニングを保証し、ソフトウェアを使用するユーザーが安心・安全に使用できるようにするものです。 コードサイニングでは、公開鍵、秘密鍵、証明書、デジタル署名など、さまざまなセキュリティ用語が使用されます。
iOS Code Signing
Apple は、ニュースで見たような最近の不具合を除けば、非常に強力なセキュリティ機構を持っていると思われる。 ブラックハットのハッカーがこのメカニズムを破るのは非常に困難です。 また、Apple は、Apple App Store からダウンロードした iOS アプリケーションのセキュリティ、完全性、および安全性を提供するために、強力なコード署名メカニズムを使用しています。 ほとんどの場合、iOSのコード署名はボンネットの下で行われる魔法のように見えます。 もしそれがうまくいけば、誰もがハッピーになり、もしそうでなければ、誰もがパニックになります。 iOSエンジニアのほとんどは、自分たちが書いたアプリが署名されるとき、ボンネットの下で何が起こっているのか知りません。 最近、AppleはXcodeに自動署名機能を導入し、コード署名が主要な開発フローを妨げないようにすることで、コード署名の痛みを軽減しようとしている。 Appleのコード署名は、X.509標準の公開鍵暗号方式に依存している。
Why Learn About iOS Code Signing
As most of the code signing tasks are handled by Xcode these days, then why we should care about the code signing and why should invest our time to learn about it?
以下は、コード署名の内部について学ぶべき理由の一部です:
- かつて iOS エンジニアがローカル マシンにインストールした Xcode から iOS アプリケーションをデプロイしていた時代は過ぎ去りました。 Xcode のコード署名が失敗し、開発者が証明書の再生成と修復、およびプロファイルのプロビジョニングによってコード署名の問題を修正しようとするために、何千時間もの開発者の時間が浪費されています。 しかし、Apple が基礎となるテクノロジーに変更を加えると、Fastlane は壊れ続け、開発者は壊れたデプロイメント スクリプトの修正に何時間も、何日も、何週間も費やしています。 場合によっては、エンジニアは新しい変更が Fastlane に実装されるまで待たなければなりません。
- もしあなたが iOS 開発者/エンジニアで、生涯 iOS エンジニアでありたいと思うなら、これらのことを学ぶ必要はないでしょう。 しかし、キャリアアップを目指すのであれば、基礎となるツールや技術、iOSのエコシステム全体を詳しく知っておく必要があります。 iOSの開発スキルがどれだけ高くても、これらの基礎的な技術を知らなければ、iOS Tech LeadやiOS Tech Architect、または同様の役割を果たすことはできません。 テックアーキテクトとして、コード署名や同様のインフラ関連の問題を、Xcode やその他のサードパーティ製ツールに頼ることなく、迅速に修正できるようになる必要があります。
Pre-requisite
iOS コード署名の世界に飛び込んでみましょう。 この記事では、iOS のコード署名の世界に飛び込んでみましょう。
- macOS
- Apple Developer Membership
- Xcode 9+
これらがすべて揃えば、iOS コード署名に取り組む準備ができているはずです。
Benefits of Code Signing
Apple は、実際のユーザーにとってメリットがあるため、複雑なコード署名のプロセスを経ることを望んでいます。 iOS アプリケーションのユーザーは、Apple のアプリケーション ストアからアプリケーションをダウンロードするとき、安全だと感じます。 コード署名は、
- 正当な開発者がこのコードを書き、署名者やアプリの作者の身元が確認できることを保証します。
- ユーザーは、セキュリティについてあまり心配することなく、信頼できる開発者からアプリをダウンロードすることができます。
コード署名は iOS ユーザーの安全とセキュリティのためにあり、ユーザーは app store.
コード署名の限界
コード署名はユーザーの安全のためですが、常にセキュリティ問題を解決できるわけではない側面もあります。
- コード署名は、Apple Developer Program のメンバーである正当な開発者からのコードであることを保証しますが、コードそのものにセキュリティ脆弱性がないことを保証するものではありません。
- 署名されたコードには、デジタル著作権管理やコピー防止技術はありません。
さて、ここまでコード署名について学ぶことの重要性と利点や制限について説明しました。 次回は、コード署名プロセスが開始される重要な概念、すなわち証明書署名要求について説明します。 証明書署名要求
について
コメントを残す