چیزهای جدید برای سازمانی در اندروید 10

این صفحه یک نمای کلی از APIهای جدید سازمانی، ویژگی ها و تغییرات رفتاری معرفی شده در اندروید 10 ارائه می دهد.

پروفایل های کاری برای دستگاه های متعلق به شرکت

اندروید 10 ویژگی‌های جدید تهیه و تأیید را برای دستگاه‌های متعلق به شرکت معرفی می‌کند که فقط به نمایه کاری نیاز دارند.

ابزارهای تامین بهبود یافته برای پروفایل های کاری

می‌توانید نمایه‌های کاری را در دستگاه‌های Android 10 و جدیدتر که با استفاده از کد QR یا Zero touch ثبت‌نام کرده‌اند، ارائه دهید. در طول ارائه یک دستگاه متعلق به شرکت، یک هدف جدید به برنامه‌های کنترل‌کننده خط‌مشی دستگاه (DPC) اجازه می‌دهد تا نمایه کاری یا راه‌اندازی کاملاً مدیریت‌شده را آغاز کنند. پس از ایجاد نمایه کاری یا ایجاد مدیریت کامل، DPCها باید صفحه‌های انطباق با خط‌مشی را راه‌اندازی کنند تا هرگونه خط‌مشی اولیه را اعمال کنند.

در فایل مانیفست DPC خود، یک فیلتر قصد جدید برای GET_PROVISIONING_MODE در یک فعالیت اعلام کنید و مجوز BIND_DEVICE_ADMIN را اضافه کنید تا از شروع فعالیت برنامه‌های دلخواه جلوگیری شود. به عنوان مثال:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

در حین تهیه، سیستم فعالیت مرتبط با فیلتر قصد را راه اندازی می کند. هدف از این فعالیت تعیین حالت مدیریت (نمایه کاری یا کاملاً مدیریت شده) است.

ممکن است قبل از تعیین حالت مدیریت مناسب برای دستگاه، بازیابی موارد اضافی تدارکات مفید باشد. فعالیت می تواند getIntent() برای بازیابی موارد زیر فراخوانی کند:

DPC ها همچنین می توانند یک هدف نتیجه جدید ایجاد کنند و موارد اضافی زیر را به آن اضافه کنند:

  • EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE : به بسته موجود اضافه کنید یا یک بسته جدید ایجاد کنید. وقتی DPC شما صفحه‌های انطباق با خط‌مشی خود را راه‌اندازی می‌کند، این بسته به عنوان یک هدف اضافی ارسال می‌شود.
  • EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE : فقط در صورت اضافه کردن یک حساب کاری به عنوان بخشی از تهیه نمایه کاری، حسابی را برای انتقال مشخص کنید.
  • EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS

برای تنظیم حالت مدیریت در دستگاه، با putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode) تماس بگیرید، جایی که desiredProvisioningMode است:

  • نمایه کاری: PROVISIONING_MODE_MANAGED_PROFILE
  • کاملاً مدیریت شده: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

نمایه کاری را کامل کنید یا تهیه کامل مدیریت شده را با ارسال جزئیات تهیه مجدد به تنظیمات از طریق setResult(RESULT_OK, Intent) تکمیل کنید و تمام صفحه‌های فعال را با finish() ببندید.

پس از تکمیل آماده‌سازی، یک Intent جدید برای DPCها در دسترس است تا صفحه‌های انطباق خود را راه‌اندازی کنند و تنظیمات خط‌مشی اولیه را اعمال کنند. در دستگاه‌های نمایه کاری، صفحه‌های سازگاری در نمایه کاری نمایش داده می‌شوند. DPC شما باید اطمینان حاصل کند که صفحه‌های انطباق آن به کاربران نشان داده می‌شود، حتی اگر کاربر از جریان راه‌اندازی فرار کند.

در فایل مانیفست DPC خود، یک فیلتر قصد جدید برای ADMIN_POLICY_COMPLIANCE در یک فعالیت اعلام کنید و مجوز BIND_DEVICE_ADMIN را اضافه کنید تا از شروع فعالیت برنامه‌های دلخواه جلوگیری شود. به عنوان مثال:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

DPC شما باید به جای گوش دادن برای پخش ACTION_PROFILE_PROVISIONING_COMPLETE از این Intent جدید استفاده کند.

فعالیت مرتبط با فیلتر intent می‌تواند getIntent() برای بازیابی EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE فراخوانی کند. پس از انجام انطباق با خط‌مشی، ADMIN_POLICY_COMPLIANCE باید setResult(RESULT_OK, Intent) را برگرداند و تمام صفحه‌های فعال را با finish() ببندد.

دستگاه های کاملاً مدیریت شده کاربران را به صفحه اصلی باز می گرداند. دستگاه‌های نمایه کاری از کاربران می‌خواهند حساب شخصی خود را قبل از بازگرداندن آنها به صفحه اصلی اضافه کنند.

گواهینامه شناسه دستگاه نمایه کار

DPCهایی که به‌عنوان سرپرست نمایه کاری ارائه شده با استفاده از ثبت‌نام بدون لمس تنظیم شده‌اند، می‌توانند شناسه‌های دستگاه تأییدشده با سخت‌افزار ایمن، مانند IMEI یا شماره سریال سازنده را دریافت کنند. دستگاه باید دارای سخت افزار ایمن (مانند یک محیط اجرای قابل اعتماد (TEE) یا Secure Element (SE)) باشد و از گواهی شناسه دستگاه و ثبت نام بدون لمس پشتیبانی کند.

جزء سرپرست یک نمایه کاری می‌تواند DevicePolicyManager.generateKeyPair() را فراخوانی کند و یک یا چند ID_TYPE_SERIAL ، ID_TYPE_IMEI ، یا ID_TYPE_MEID را برای آرگومان idAttestationFlags ارسال کند.

برای کسب اطلاعات بیشتر در مورد استخراج و اعتبارسنجی شناسه‌های دستگاه، به تأیید جفت‌های کلید سخت‌افزاری با تأیید کلید مراجعه کنید.

بهبود پروفایل کاری

APIهای جدید برای پشتیبانی از نمایه شدن تقویم بین پروفایل و مسدود کردن نصب برنامه از منابع ناشناس در سراسر دستگاه در دسترس هستند.

نمایه کاری، منابع ناشناخته در سراسر دستگاه

برنامه‌های دانلود شده از منابعی غیر از Google Play (یا سایر فروشگاه‌های برنامه قابل اعتماد) برنامه‌هایی از منابع ناشناخته نامیده می‌شوند. در Android 10، سرپرستان نمایه‌های کاری می‌توانند با افزودن محدودیت کاربری جدید DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY ، از نصب برنامه‌های هر کاربر یا نمایه‌ای از منابع ناشناس در هر نقطه از دستگاه جلوگیری کنند. با این حال، پس از افزودن این محدودیت، شخصی که از دستگاه استفاده می‌کند همچنان می‌تواند برنامه‌ها را با استفاده از adb نصب کند.

برای جلوگیری از نصب اشتباه کاربران برنامه ها از منابع ناشناس، توصیه می کنیم این محدودیت کاربری را اضافه کنید زیرا نیازی به نصب سرویس های Google Play ندارد. اگر می‌خواهید از نسخه‌های قدیمی‌تر Android پشتیبانی کنید، می‌توانید یک مقدار پیکربندی مدیریت شده برای Google Play تنظیم کنید.

دستگاه‌های ورودی مجاز را به نمایه‌های کاری محدود کنید

وقتی مدیران نمایه‌های کاری DevicePolicyManager.setPermittedInputMethods() را فرا می‌خوانند، کاربران به جای کل دستگاه، فقط به روش‌های ورودی مجاز در نمایه کاری خود محدود می‌شوند و به کاربران امکان کنترل کامل بر روش‌های ورودی در سمت شخصی دستگاهشان را می‌دهند.

بی‌صدا پروفایل‌های کاری را پاک کنید

پرچم WIPE_SILENTLY به DevicePolicyManager.wipeData() اضافه شد. اگر پرچم تنظیم شده باشد، کاربران پس از پاک شدن نمایه کاری آنها با استفاده از wipeData() مطلع نمی شوند.

ویژگی های جدید برای دستگاه های کاملاً مدیریت شده

Android 10 ویژگی‌ها و APIهای جدیدی را برای دستگاه‌های کاملاً مدیریت‌شده معرفی می‌کند، از جمله به‌روزرسانی‌های دستی سیستم، گسترش کد QR و ارائه NFC برای درج اعتبارنامه‌های یک شبکه Wi-Fi EAP، و پشتیبانی از DNS از طریق TLS.

نصب دستی به روز رسانی سیستم

در اندروید 10، مدیران دستگاه‌های کاملاً مدیریت شده می‌توانند به‌روزرسانی‌های سیستم را از طریق فایل به‌روزرسانی سیستم نصب کنند. به روز رسانی دستی سیستم به مدیران فناوری اطلاعات اجازه می دهد تا کارهای زیر را انجام دهند:

  • قبل از نصب گسترده، یک به‌روزرسانی را روی تعداد کمی از دستگاه‌ها آزمایش کنید.
  • از دانلودهای تکراری در شبکه های با پهنای باند محدود خودداری کنید.
  • نصب‌ها را تکان می‌دهند، یا دستگاه‌ها را فقط زمانی به‌روزرسانی می‌کنند که از آنها استفاده نمی‌شود.

ابتدا، یک سرپرست فناوری اطلاعات یک خط مشی به‌روزرسانی سیستم به تعویق افتاده را تنظیم می‌کند تا نصب خودکار را به تأخیر بیندازد (در صورت لزوم). سپس، DPC دستگاه، installSystemUpdate() با مسیر فایل به‌روزرسانی سیستم سازنده دستگاه فراخوانی می‌کند. یک شی InstallSystemUpdateCallback ارسال کنید که سیستم می تواند از آن برای گزارش خطاهایی که قبل از راه اندازی مجدد دستگاه رخ می دهد استفاده کند. اگر مشکلی پیش بیاید، سیستم onInstallUpdateError() با کد خطا فراخوانی می کند.

پس از راه اندازی مجدد دستگاه، DPC شما باید با استفاده از یک نسخه API، مانند Build.FINGERPRINT ، نصب موفقیت آمیز را تأیید کند. اگر به‌روزرسانی انجام نشد، خرابی را به یک سرپرست فناوری اطلاعات گزارش دهید.

تامین وای فای EAP

در Android 10، کدهای QR و داده‌های NFC که برای تهیه دستگاه استفاده می‌شوند، می‌توانند حاوی پیکربندی EAP و اعتبارنامه‌ها (از جمله گواهی‌ها) باشند. وقتی شخصی یک کد QR را اسکن می‌کند یا روی یک برچسب NFC ضربه می‌زند، دستگاه به‌طور خودکار با استفاده از EAP در یک شبکه محلی Wi-Fi احراز هویت می‌شود و فرآیند تهیه را بدون ورودی دستی اضافی آغاز می‌کند.

برای احراز هویت Wi-Fi با استفاده از EAP، یک EXTRA_PROVISIONING_WIFI_SECURITY_TYPE اضافی با مقدار "EAP" اضافه کنید. برای تعیین احراز هویت EAP، می توانید موارد اضافی تدارکات زیر را به قصد خود اضافه کنید:

پشتیبانی از DNS خصوصی

سازمان‌ها می‌توانند از DNS روی TLS (به نام Private DNS در دستگاه‌های Android) استفاده کنند تا از افشای درخواست‌های DNS، از جمله موارد نام‌های میزبان داخلی جلوگیری کنند. اجزای سرپرست دستگاه‌های کاملاً مدیریت شده می‌توانند تنظیمات DNS خصوصی دستگاه را کنترل کنند. برای تنظیم حالت DNS خصوصی، تماس بگیرید:

هنگامی که DPC شما با یکی از این روش ها تماس می گیرد، در صورت موفقیت آمیز بودن تماس، سیستم PRIVATE_DNS_SET_NO_ERROR را برمی گرداند. در غیر این صورت یک خطا برمی گرداند.

برای بازیابی حالت DNS خصوصی و مجموعه میزبان در دستگاه، getGlobalPrivateDnsMode() و getGlobalPrivateDnsHost() را فراخوانی کنید. با افزودن محدودیت کاربر DISALLOW_CONFIG_PRIVATE_DNS می توانید از تغییر تنظیمات DNS خصوصی توسط کاربران جلوگیری کنید.

معافیت حالت قفل VPN

حالت قفل VPN به یک DPC اجازه می دهد تا ترافیک شبکه ای را که از VPN استفاده نمی کند مسدود کند . سرپرستان دستگاه‌های کاملاً مدیریت شده و نمایه‌های کاری می‌توانند برنامه‌ها را از حالت قفل کردن معاف کنند. برنامه‌های مستثنی شده به‌طور پیش‌فرض از VPN استفاده می‌کنند، اما اگر VPN در دسترس نباشد، به‌طور خودکار به شبکه‌های دیگر متصل می‌شوند. برنامه‌های مستثنی که به صراحت از دسترسی به VPN نیز محروم هستند، فقط از شبکه‌های دیگر استفاده خواهند کرد.

برای معافیت یک برنامه از حالت قفل، روش جدید DevicePolicyManager setAlwaysOnVpnPackage() را فراخوانی کنید که لیستی از بسته های برنامه معاف را می پذیرد. هر بسته برنامه ای که DPC اضافه می کند باید در هنگام فراخوانی روش روی دستگاه نصب شود. اگر برنامه‌ای حذف و دوباره نصب شود، برنامه باید دوباره معاف شود. برای دریافت برنامه‌هایی که قبلاً از حالت قفل کردن معاف شده‌اند، با getAlwaysOnVpnLockdownWhitelist() تماس بگیرید.

برای کمک به مدیران دستگاه‌های کاملاً مدیریت‌شده و نمایه‌های کاری در دریافت وضعیت حالت قفل، Android 10 روش isAlwaysOnVpnLockdownEnabled() را اضافه می‌کند.

حوزه های نمایندگی جدید

Android 10 لیستی از عملکردهایی را که یک DPC می تواند به سایر برنامه های تخصصی تر واگذار کند، گسترش می دهد. Android متدهای API مورد نیاز برای یک کار را در محدوده ها گروه بندی می کند. برای تفویض اختیار یک scope، setDelegatedScopes() را فراخوانی کنید و یک یا چند مورد از حوزه های زیر را پاس کنید:

اندروید 10 کلاس جدید DelegatedAdminReceiver را برای برنامه های نمایندگی معرفی می کند. سیستم از این گیرنده پخش برای ارسال تماس‌های مشابه DPC به برنامه‌ها استفاده می‌کند. برنامه‌هایی که ثبت فعالیت شبکه و انتخاب گواهینامه به آنها واگذار شده است باید این کلاس را پیاده‌سازی کنند. برای افزودن این مؤلفه به یک برنامه نمایندگی، این مراحل را دنبال کنید:

  1. یک زیر کلاس از DelegatedAdminReceiver را به برنامه delegate اضافه کنید.
  2. <receiver> در مانیفست برنامه اعلام کنید و برای هر پاسخ به تماس یک اقدام فیلتر قصد اضافه کنید. به عنوان مثال، ACTION_NETWORK_LOGS_AVAILABLE یا ACTION_CHOOSE_PRIVATE_KEY_ALIAS .
  3. از گیرنده پخش با مجوز BIND_DEVICE_ADMIN محافظت کنید.

قطعه زیر مانیفست برنامه یک برنامه نماینده واحد را نشان می‌دهد که هم گزارش‌گیری شبکه و هم انتخاب گواهی را مدیریت می‌کند:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

ثبت فعالیت شبکه

برای کمک به سازمان‌ها در شناسایی و ردیابی بدافزارها، DPCها می‌توانند اتصالات TCP و جستجوهای DNS را توسط سیستم ثبت کنند . در اندروید 10، ادمین‌های دستگاه‌های کاملاً مدیریت شده می‌توانند گزارش شبکه را به یک برنامه تخصصی واگذار کنند.

برای بازیابی گزارش‌های شبکه پس از اینکه سیستم دسته‌ای را در دسترس قرار داد، برنامه‌های واگذار شده باید ابتدا DelegatedAdminReceiver را زیر کلاس قرار دهند (که قبلاً توضیح داده شد). در زیرکلاس خود، با دنبال کردن دستورالعمل‌های موجود در Retrieve logs، فراخوانی onNetworkLogsAvailable() را اجرا کنید.

برنامه‌های Delegate می‌توانند روش‌های DevicePolicyManager زیر را فراخوانی کنند (تعویض null برای آرگومان admin ):

برای جلوگیری از از دست دادن گزارش‌ها، DPC نباید گزارش‌گیری شبکه را در صورت برنامه‌ریزی برای واگذاری به برنامه دیگری فعال کند . برنامه نماینده باید گزارش‌های شبکه را فعال و جمع‌آوری کند. پس از اینکه یک DPC ثبت گزارش شبکه را واگذار کرد، دیگر تماس‌های onNetworkLogsAvailable() دریافت نخواهد کرد.

برای آشنایی با نحوه گزارش گزارش فعالیت شبکه از یک برنامه نماینده، راهنمای توسعه‌دهنده گزارش فعالیت شبکه را بخوانید.

انتخاب گواهی

در Android 10، مدیران دستگاه‌های کاملاً مدیریت شده، نمایه‌های کاری و کاربران ثانویه می‌توانند انتخاب گواهی را به یک برنامه تخصصی واگذار کنند.

برای انتخاب نام مستعار گواهی، برنامه‌های واگذار شده باید ابتدا DelegatedAdminReceiver (که قبلاً توضیح داده شد) را زیر کلاس قرار دهند. در زیر کلاس خود، callback onChoosePrivateKeyAlias() ​​را پیاده سازی کنید و یک نام مستعار برای یک گواهی ترجیحی برگردانید یا برای اینکه از کاربر بخواهد یک گواهی را انتخاب کند، null را برگردانید.

منسوخ شدن خط‌مشی‌های سرپرست دستگاه

Android 10 از اعمال خط‌مشی‌های مدیریت دستگاه قدیمی توسط برنامه‌ها و DPCها جلوگیری می‌کند. توصیه می‌کنیم مشتریان و شرکا به دستگاه‌های کاملاً مدیریت‌شده یا نمایه‌های کاری انتقال یابند. خط‌مشی‌های زیر هنگام فراخوانی توسط سرپرست دستگاهی که اندروید 10 را هدف قرار می‌دهد، یک SecurityException ایجاد می‌کند:

برخی از برنامه ها از ادمین دستگاه برای مدیریت دستگاه مصرف کننده استفاده می کنند. به عنوان مثال، قفل کردن و پاک کردن دستگاه گم شده. برای فعال کردن این، خط‌مشی‌های زیر همچنان در دسترس هستند:

برای اطلاعات بیشتر درباره این تغییرات، منسوخ شدن سرپرست دستگاه را بخوانید.

ویژگی های جدید برای برنامه ها

برنامه‌هایی که اندروید 10 را هدف قرار می‌دهند، می‌توانند پیچیدگی قفل صفحه را که روی دستگاه تنظیم شده است، قبل از نمایش داده‌های محرمانه یا راه‌اندازی ویژگی‌های حیاتی پرس و جو کنند. برنامه‌هایی که KeyChain API را فراخوانی می‌کنند از بهبود رفتار بهره می‌برند، در حالی که ویژگی‌های جدیدی برای برنامه‌های VPN نیز موجود است.

بررسی کیفیت قفل صفحه

با شروع اندروید 10، برنامه‌هایی با ویژگی‌های حیاتی که به قفل صفحه نیاز دارند، می‌توانند پیچیدگی قفل صفحه نمایه‌ی کار یا دستگاه را جویا شوند. برنامه‌هایی که به قفل صفحه قوی‌تری نیاز دارند، می‌توانند کاربر را به تنظیمات قفل صفحه سیستم هدایت کنند و به او اجازه می‌دهند تنظیمات امنیتی خود را به‌روزرسانی کنند.

برای بررسی کیفیت قفل صفحه:

برای راه اندازی تنظیمات قفل صفحه سیستم، از ACTION_SET_NEW_PASSWORD با EXTRA_PASSWORD_COMPLEXITY اضافی استفاده کنید — گزینه هایی که با پیچیدگی مشخص شده در intent اضافی مطابقت ندارند، خاکستری می شوند. کاربران می توانند از میان گزینه های موجود قفل صفحه انتخاب کنند یا از صفحه خارج شوند.

بهترین تمرین: قبل از راه اندازی صفحه قفل صفحه سیستم، پیامی را در برنامه خود نمایش دهید. وقتی برنامه شما از سر گرفته شد، دوباره با DevicePolicyManager.getPasswordComplexity() تماس بگیرید. اگر همچنان به قفل صفحه نمایش قوی تری نیاز است، به جای اینکه مکرراً از کاربران بخواهید تنظیمات امنیتی خود را به روز کنند، دسترسی را محدود کنید.

پشتیبانی از پروکسی HTTP در برنامه های VPN

در Android 10، برنامه های VPN می توانند یک پروکسی HTTP برای اتصال VPN خود تنظیم کنند. برای افزودن یک پروکسی HTTP، یک برنامه VPN باید یک نمونه ProxyInfo با میزبان و پورت، قبل از فراخوانی VpnService.Builder.setHttpProxy() پیکربندی کند. سیستم و بسیاری از کتابخانه‌های شبکه از این تنظیم پراکسی استفاده می‌کنند، اما سیستم برنامه‌ها را مجبور نمی‌کند تا درخواست‌های HTTP را پراکسی کنند.

برای نمونه کدی که نحوه تنظیم پروکسی HTTP را نشان می دهد، به برنامه نمونه ToyVPN مراجعه کنید.

حالت های سرویس VPN

برنامه‌های VPN می‌توانند متوجه شوند که آیا سرویس به دلیل Vpn همیشه روشن در حال اجرا است یا خیر و آیا حالت قفل فعال است یا خیر. روش های جدید اضافه شده در اندروید 10 می تواند به شما در تنظیم رابط کاربری کمک کند. به عنوان مثال، زمانی که VPN همیشه روشن چرخه عمر سرویس شما را کنترل می کند، ممکن است دکمه قطع اتصال خود را غیرفعال کنید.

برنامه‌های VPN می‌توانند پس از اتصال به سرویس و ایجاد رابط محلی، روش‌های VpnService زیر را فراخوانی کنند:

  • isAlwaysOn() برای اینکه بفهمید آیا سیستم سرویس را به دلیل VPN همیشه روشن شروع کرده است یا خیر
  • isLockdownEnabled() برای اطلاع از اینکه آیا سیستم اتصالاتی را که از VPN استفاده نمی کنند مسدود می کند یا خیر.

وضعیت همیشه روشن تا زمانی که سرویس شما در حال اجرا است ثابت می ماند اما وضعیت حالت قفل ممکن است تغییر کند.

بهبودهای جاکلیدی

اندروید 10 چندین بهبود مربوط به KeyChain API را معرفی می کند.

هنگامی که یک برنامه KeyChain.choosePrivateKeyAlias() ​​را فرا می‌خواند، دستگاه‌های Android 10 و جدیدتر فهرست گواهی‌هایی را که کاربر می‌تواند بر اساس صادرکنندگان و الگوریتم‌های کلیدی مشخص‌شده در تماس انتخاب کند فیلتر می‌کند.

برای مثال، زمانی که یک سرور TLS یک پیام درخواست گواهی را به عنوان بخشی از یک دست دادن TLS ارسال می‌کند و مرورگر KeyChain.choosePrivateKeyAlias() را فراخوانی می‌کند، اعلان انتخاب گواهی تنها شامل گزینه‌هایی می‌شود که با پارامتر صادرکنندگان مطابقت دارند. اگر هیچ گزینه منطبقی در دسترس نباشد یا گواهینامه‌ای روی دستگاه نصب نشده باشد، اعلان انتخاب به کاربر نمایش داده نمی‌شود.

علاوه بر این، KeyChain دیگر نیازی به قفل صفحه نمایش قبل از وارد کردن کلیدها یا گواهی‌های CA ندارد.