web-dev-qa-db-ja.com

iOSはエンタープライズ証明書の有効性をいつチェックしますか?

記事はこちら もう少しコンテキストがわかります(詳細については、同じユーザー名のコメントを参照してください)。

iOS開発者は、エンタープライズプロビジョニングプロファイルを使用して、App Storeの外でアプリを配布できます。これにより、App Storeの承認を必要とせずにSafariから直接アプリをインストールできるため、開発者以外がベータビルドをテストしたり、企業が社内アプリを従業員に配布したりできます。

ただし、Appleとエンタープライズアカウントの所有者はどちらも、プロビジョニングプロファイルを裏付ける証明書を取り消すことができます。これにより、ユーザーがアプリをインストールできなくなります(上記の記事の場合、Appleエミュレーターの署名に使用されたエンタープライズプロファイルを取り消しました。エンタープライズ配布によって付与された自由の乱用と見なされたためです)...もちろん、そのチェックを回避するために使用される「抜け穴」を除きます:システム日付を任意の日付に変更します過去の日付。

これは証明書の検証がどのように実装されているかについて多くの疑問を引き起こしますが、抜け穴が悪用されていないときに何が起こるかについて私は最も興味があります。 デバイスが実際にAppleに到達して、証明書が取り消されていないことを確認しますか?現時点ではアプリインストールされていますか?その場合、それは「ソフト」(明示的に失効が検出されない限りインストールを許可します)または「ハード」(証明書が完全に有効であることが絶対的に証明されない限りインストールを禁止します)ですか?または、デバイスは定期的にAppleにチェックインして、エンタープライズ証明書IDの更新されたブラックリスト/ホワイトリストを取得しますか?それとも何か違うのですか?

12
n00neimp0rtant

iOS 7 Deployment Technical Reference ドキュメントから(PDFを開きます):

証明書の検証
ユーザーが初めてアプリを開いたときに、配布証明書はAppleのOCSPサーバーに連絡して検証されます。証明書が取り消されていない限り、アプリの実行が許可されます。 OCSPサーバーに接続できない、またはOCSPサーバーから応答を取得できない場合は、失効とは見なされません。ステータスを確認するには、デバイスがocsp.Apple.comにアクセスできる必要があります。この付録の前半の「ネットワーク構成要件」を参照してください。

OCSP応答は、OCSPサーバーによって指定された期間(現在は3〜7日)の間、デバイスにキャッシュされます。証明書の有効性は、デバイスが再起動してキャッシュされた応答の有効期限が切れるまで、再度チェックされません。

その時点で取り消しが受信されると、アプリの実行が妨げられます。

配布証明書を取り消すと、配布証明書で署名したすべてのアプリが無効になります。秘密鍵が失われたか、証明書が危険にさらされていると思われる場合は、最後の手段としてのみ証明書を失効させる必要があります。

6
RoraΖ

最新の答えは、AppleのEnterprise iOS Deployment Referenceにあります。

http://help.Apple.com/deployment/ios/#/apda0e3426d7 参照:証明書の検証

ユーザーが初めてアプリを開いたときに、配布証明書はAppleのOCSPサーバーに連絡して検証されます。証明書が取り消されている場合、アプリは起動しません。ステータスを確認するには、デバイスがocsp.Apple.comにアクセスできる必要があります。

1
Ashton-W