tg-me.com/iosdev/1122
Last Update:
Что скрывают сертификаты для Code Signing?
Подписание кода является основополагающей технологией для всех платформ Apple.
Например, знаете ли вы, что provisioning profile объединяет пять критериев: кто
, что
, где
, когда
и как
.
Что касается вопроса «кто?», то в TN3125 описывается, как именно каждый профиль включает сертификат для каждого разработчика.
Но в нём нет подробного описания того, что такое сертификат.
Например, в реальном мире сертификат — это документ, в котором эмитент подтверждает некоторые факты о предмете.
Например, в свидетельстве о рождении:
🔘 Эмитентом является региональный орган регистрации.
🔘 Субъект (или же тема) — это вы.
🔘 Факты — это ваше имя, дата рождения, родители и так далее.
Эта система основана на том факте, что реальные сертификаты подделать непросто: они печатаются на красивой бумаге, используются специальные штампы, сургучные печати и так далее.
Цифровой сертификат преследует ту же цель, что и настоящий.
Однако он не может использовать красивую бумагу для предотвращения подделок, что логично.
Вместо этого цифровой сертификат основан на криптографии с открытым ключом.
Для подписи кода Apple используется стандарт цифровых сертификатов X.509.
Сертификат X.509 содержит пять частей информации:
🔘 Реквизиты эмитента.
🔘 Подробности темы.
🔘 Открытый ключ субъекта.
🔘 Обязательные факты, например действительный диапазон дат.
🔘 Необязательные факты, известные как расширения.
Эмитент подписывает эту информацию своим закрытым ключом, а затем объединяет ее в сертификат (более подробно - вот тут).Certificate signing request
, что происходит при переподписывании кода в App Store, а также путаницу в экосистеме Apple.