как подписать приложение ios своим сертификатом

Как подписывать приложения для macOS Catalina 10.15

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом

[Прим. пер.: переведя вызвавший широкое обсуждение на Хабре пост, я заинтересовался новыми правилами для разработчиков ПО, введёнными компанией Apple. В этой статье рассказывается о личном опыте освоения правил одним из разработчиков игр.]

Введение

В новой версии macOS Apple сделала обязательными некоторые требования к приложениям, которые раньше были рекомендациями: 64-битные исполняемые файлы, подписывание и нотаризация. Не удовлетворяющие этим требованиям приложения больше запускаться не будут.

Это сделано для того, чтобы обезопасить работу пользователей и предотвратить распространение зловредных программ, но в то же время это сильно усложняет жизнь, особенно тем людям, для которых Mac не является основной платформой разработки, но которые тем не менее хотели бы начать или продолжить поддержку Mac.

Особенно актуально это для разработчиков игр, публикующих игры для Mac в Steam. До недавних изменений игры, запущенные из Steam, не нужно было подписывать и подвергать нотаризации, но теперь они должны подчиняться тем же правилам, что и все остальные.

Я только что закончил разбираться с тем, как реализовать соответствие этим требованиям для моей игры Airships: Conquer the Skies. Airships работают на Java, а потому требуют ещё и JVM, но в целом всё остальное будет применимо для большинства разработчиков.

Вот что я узнал о подписывании и нотаризации приложения для Mac, которое не было скомпилировано непосредственно Xcode. Учтите, что информация получена из моих собственных исследований и может быть точной не на 100%. Вопросы и поправки приветствуются.

История вопроса

В этой статье рассматривается подписывание и нотаризация. Получение 64-битного исполняемого файла программы — это уже задача вашего компилятора или среды разработки.

В macOS приложения обычно упаковываются в bundle — папки, содержащие исполняемый файл, а также дополнительные ресурсы и метаданные. Подписывание бандла означает создание криптографичекой контрольной суммы содержимого бандла с последующим созданием криптографической подписи с сертификатом, которые Apple выпускает для разработчика. Подпись — это заявление о том, что вы лично гарантируете правильное поведение приложения. Если содержимое бандла меняется, то меняется контрольная сумма, и подпись перестаёт им соответствовать, предупреждая операционную систему, что в бандл внесены несанкционированные изменения.

Подписывание приложений существовало много лет. Чуть позже приложения также стало необходимо нотаризировать. Нотаризация (notarization) означает, что вы отправляете подписанное приложение Apple, а компания выполняет дополнительные проверки и регистрирует приложение. Если нотаризация завершается успешно, вы «прилепляете» нотаризацию к своему приложению, чтобы офлайн-машины без доступа к Интернету тоже могли убедиться, что приложение прошло нотаризацию.

Это своего рода метафора работы с бумажными документами. Разработчик собирает в бандл все части, из которых состоит приложение. Затем он создаёт список всех элементов бандла (контрольную сумму) и подписывает этот список (цифровой подписью), которую приклеивает к бандлу. Затем он передаёт подписанный бандл нотариусу господину Яблокову, который проверяет, всё ли в порядке с бандлом, а затем регистрирует его. Он даёт разработчику квитанцию, которую тот степлером прикрепляет к бандлу. То есть если разработчик сказал, что приложение безопасно, и господин Яблоков тоже говорит, что оно безопасно, то так скорее всего и есть. А если нехороший человек попробует изменить его содержимое, то список элементов бандла перестанет ему соответствовать, и пользователь будет знать, что использовать его не нужно.

Требования

Что необходимо для подписывания и нотаризации приложения:

Двухфакторная аутентификация

Если у вас её ещё нет, включите двухфакторную аутентификацию для Apple ID. Это можно сделать с любого i-устройства или с Mac. На Mac перейдите в iCloud control panel настроек System Preferences. В верхней части должна быть панель, предлагающая включить 2FA.

Покупка членства

Выполните вход в https://developer.apple.com/ при помощи своего Apple ID и перейдите во вкладку «Membership». При необходимости купите или обновите Apple Developer Program membership. Учтите, что обработка покупки занимает какое-то время во внутренних системах Apple, поэтому если у вас не получается генерировать сертификаты (см. ниже), выпейте пока чашку чая и успокойтесь.

Идентификатор приложения

Возможно, вам понадобится зарегистрировать ID бандла приложения в бэкенде разработчика. ID бандла можно найти в YourApp.app/Contents/Info.plist. (Открывать бандлы приложений можно, нажав на них правой клавишей мыши и выбрав «Show Package Contents».) Идентификатор должен иметь вид com.yourcompanyname.applicationname, например, у моей игры Airships это com.zarkonnen.airships.

Для регистрации ID выполните вход в https://developer.apple.com/, выберите в левой панели «Certificates, IDs & Profiles», а затем выберите на следующей странице «Identifiers». Затем можно нажать кнопку «+», чтобы добавить идентификатор приложения.

Пароль приложения

Для подписывания из командной строки вам понадобится пароль приложения, поэтому перейдите в https://appleid.apple.com/account/manage и сгенерируйте его.

Xcode и инструменты

Установите Xcode через App Store компьютера Mac. Затем установите также инструменты командной строки Xcode с https://developer.apple.com/download/more. Вам нужны «Command Line Tools for Xcode 11» или той версии Xcode, которую вы используете.

Сертификат

Запустите Xcode, перейдите в Preferences, откройте вкладку Accounts. При необходимости добавьте свой Apple ID к списку аккаунтов. Затем нажмите на кнопку «Manage Certificates. » в нижнем правом углу. Отобразятся имеющиеся у вас сертификаты для подписывания приложений. Вам нужен сертификат «Developer ID Application»; если в списке его нет, то создайте его. Нажмите «Done», а затем «Download» в окне Preferences:Accounts, чтобы скачать сертификаты локально.

Подготовка приложения

Чтобы приложение правильно работало в новой системе, исполняемый файл и библиотеки должны быть 64-битными.

Кроме того, Mac OS выполняет операцию под названием «translocation»: из соображений безопасности перемещает запущенный бандл приложения в случайное место. В случае моего приложения это проявилось тем, что оно не смогло найти файлы данных, расположенные рядом с бандлом приложения. Можно получать исходное расположение бандла приложения, но я решил проблему, просто поместив всё в бандл.

Разрешения (Entitlements)

Это особые разрешения, добавляемые разработчиком вместе с подписью кода, позволяющие подписанным приложениям выполнять определённые действия. Если вы компилируете приложение при помощи Xcode, то он сделает всё самостоятельно; в противном случае вам потребуется создать файл plist, содержащий все нужные вам entitlements. Файлы plist можно создавать при помощи Xcode, а по адресу https://developer.apple.com/documentation/bundleresources/entitlements находится список entitlements.

Для создания нового файла plist с помощью Xcode выберите «New File», а затем в появившемся списке нажмите на «Property List». Добавьте в корневой словарь элементы с названиями entitlements, которые вам нужны; они имеют значения boolean:YES.

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом

В случае моей игры, поскольку она написана на Java, мне понадобились следующие разрешения, чтобы работала JVM: com.apple.security.cs.allow-jit, com.apple.security.cs.allow-unsigned-executable-memory, com.apple.security.cs.disable-executable-page-protection, com.apple.security.cs.disable-library-validation, com.apple.security.cs.allow-dyld-environment-variables. Для пользователя они выглядят пугающе, поэтому если вам они не нужны, то не добавляйте их.

Далее в статье мы будем считать, что вы поместили свои entitlements в файл под названием entitlements.plist.

Подписывание

Это процесс создания цифровой подписи, сообщающей: тот, кто имеет доступ к сертификату подписи, обещает, что данный конкретный бандл приложения надёжен и не зловреден. Любые изменения в бандле приложения (кроме прикрепления подтверждения нотаризации, см. выше) после его подписывания делают подпись недействительной и требуют повторного подписания бандла.

Также это означает, что ваше приложение при работе не должно менять ничего в содержимом бандла приложения, например, не помещать туда кэш.

Каждый исполняемый файл и динамическая библиотека в бандле приложения подписываются отдельно. В некоторых случаях библиотеки уже могут быть подписанными. То есть вежливее и спокойнее всего подписывать бандл, подписав каждый элемент по очереди, а затем подписать весь бандл. Если у какого-то элемента уже есть подпись, то она останется на своём месте.

Грубым, но эффективным способом будет принудительное глубокое подписание, то есть ваша подпись будет применена ко всем элементам бандла приложения, заменив все предыдущие подписи. Именно так мы и поступим, потому что это проще и потому, что предыдущие подписи могут быть недействительными или недостаточно сильными.

Вам понадобится следующая пугающая команда:

Изучить подпись можно командой

Также следует запустить приложение, чтобы убедиться, что оно продолжает работать после подписывания.

Нотаризация

Подписав приложение, нужно предоставить его системам Apple для нотаризации, чтобы сказать: «смотрите, я подписал вот эту штуку».

Для этого надо сначала сжать приложение в специальный файл zip с помощью команды ditto:

Простая упаковка приложения в zip при помощи Finder или командной строки не подойдёт.

Затем отправить zip для нотаризации:

ID бандла можно найти, заглянув в YourApp.app/Contents/Info.plist. (Открывать бандлы приложений можно, нажав на них правой клавишей мыши и выбрав «Show Package Contents».)

Нотаризация может занять довольно много времени. Обычно это несколько секунд или минут, но иногда может быть и час. Налейте себе ещё чая, или чего покрепче, выбирайте сами. Рано или поздно вы получите нечто подобное:

No errors uploading ‘YourApp.zip’.
RequestUUID = 29926ae6-f551-4d54-b283-e29d6f9b9156

Теперь мы можете использовать следующую команду для проверки состояния переданного бандла:

На экран будет выведено нечто подобное:

Повторюсь, подтверждение обычно занимает около 15 минут, но иногда на то же самое приложение требуется несколько часов. Ага, вот так.

Если status имеет значение failure, то посмотрите ошибки, перечисленные по URL файла лога. Если вы получили success, то всё равно взгляните, потому что там могут быть предупреждения, и эти предупреждения вполне могут стать ошибками, когда Apple снова ужесточит свои требования.

Прикрепление

Наконец, «пристеплерим» подтверждение нотаризации к бандлу приложения, чтобы её мог проверять даже Mac без подключения к Интернету. Для этого необходимо выполнить на удивление короткую команду:

xcrun stapler staple «YourApp.app»

Поздравляю, вы подписали и нотаризировали приложение для Mac. Теперь вы можете распространять бандл приложения любым удобным вам способом, если он не будет изменяться в процессе.

Если вы оказались в одной лодке со мной и вам нужно добавить в бандл с приложением JVM, то продолжайте чтение.

Существует несколько вариантов объединения в бандл JVM с Java-приложением. Я бы рекомендовал AppBundler, который является ant task, выполняющим за вас всю работу. Изначально AppBundler можно было скачать с java.net, но благодаря пренебрежению Oracle остальной платформой Java, теперь придётся скачивать последнюю версию с https://github.com/TheInfiniteKind/appbundler.

Там вы можете найти исходники и документацию, но не jar, потому что предполагается, что вы пользуетесь Maven. Если вы не используете Maven, то jar можно взять отсюда: https://jar-download.com/artifacts/com.panayotis/appbundler

Следуйте инструкциям в документации на странице github для настройки бандла. Лично я использую NetBeans, и для решения задачи я вставил в build.xml следующие строки:

Это задача, выполняемая после создания файла jar. Она использует appbundler-1.1.0.jar для создания бандла приложения со встроенной JVM.

Используемый мной JDK можно скачать с https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html. Я выбрал версию 11, потому что она имеет LTS (long-term support), но использует старые лицензионные условия Oracle, в то время как версия 13 имеет странный новый набор лицензионных ограничений.

Также есть более юридически свободные JVM от OpenJDK, но мне не удалось заставить их работать с app bundler.

Примечание: JVM — это «Java Virtual Machine». JRE — это «Java Runtime Environment», которая включает в себя JVM плюс дополнительные элементы, например, Java updater. JDK — это «Java Development Kit», который состоит из JRE плюс вещей, необходимых для написания программ на Java, например, компилятора. До Java 8 JRE была доступна для конечных пользователей отдельно, но с тех пор доступен только JDK, и поэтому мы связываем среду разработки Java с компьютерной игрой.

Вы должны получить возможность глубокой подписи и нотаризации получившегося бандла. В документации к AppBundler есть целая куча дополнительных опций, например, добавление иконки, ассоциации типов файлов и генерация урезанной JVM для приложения.

Источник

Как получить подпись для приложений iOS?

Чтобы создать подпись для приложений iOS, вам необходимо получить сертификат, идентификатор приложения и профиль обеспечения. Чтобы создавать сертификаты, идентификаторы приложений и профили обеспечения, вам необходимо зарегистрироваться в Программе разработчика Apple iOS или Программе разработчика Apple iOS Enterprise, если вы еще не зарегистрированы.

После регистрации, вам необходимо выполнить следующие шаги:

Создание сертификата распространения

Чтобы опубликовать приложение в App Store или распространить его на ограниченное количество устройств, необходимо подписать код с помощью профиля обеспечения распространения. Чтобы создать профиль обеспечения распространения, вам необходим сертификат распространения, подписанный Apple.

Вы можете создать сертификат распространения в iOS Dev Center.

Создание сертификата *p12 для пользователей Mac

1. Откройте приложение “Keychain Access” (в папке “Программы / Утилиты”).

3. Выберите категорию “Keys” в “Keychain Access”.

4. Выберите закрытый ключ, связанный с вашим сертификатом разработки iPhone. Закрытый ключ определяется разработчиком iPhone: публичный сертификат, который в паре с ним.

5. Командой щелкните сертификат iPhone Developer и выберите «Export» iPhone Developer: Name».

6. Сохраните хранилище ключей в формате файла обмена личной информацией (*p12).

7. Вам будет предложено создать пароль, который будет использоваться при использовании хранилища ключей для подписи приложений или при передаче ключа и сертификата в этом хранилище ключей в другое хранилище ключей.

Создание сертификата *p12 для пользователей Windows

1. Загрузите и установите OpenSSL

Для тестирования или распространения приложения iOS вамм потребуется Профиль обеспечения.

Для создания профиля обеспечения обратитесь к документации Apple.

Источник

Сертификат Apple

С сертификатом разработчика Apple можно подписать и установить бесплатно прак­тически любые платные и модифици­рованные приложения, даже удален­ные из App Store. Без Jailbreak, на любой версии iOS, iPadOS и tvOS.

Стоимость сертификата: 699 599 рублей

Дешевле, чем всего одно достойное приложение.

Регистрация UDID и выпуск сертификата — мгновенно.

Для чего нужен сертификат?

Существуют тысячи приложений для вашего устройства, но многие из них стоят немалых денег, некоторые удалены из App Store, есть приложения с расширенным функцио­налом, которые ставятся только на «джейл», а есть и вовсе приложения для установки Jailbreak.

Сертификат разработчика позволяет подписать и установить такие приложения бесплатно и без взлома ОС.

Поддерживаются iPhone, iPad, iPod, Apple TV

Часто применяется для установки:

Отличие от «личного» сертификата:

Спецпредложение Закажите сертификат у нас и установите любое приложение с этой страницы без компьютера и jailbreak.

Как это работает?

Подпись сертификатом и установка приложений довольно проста. На первую настройку уходит около 20 минут, а на подпись одного приложения — не более минуты.

Настройте компьютер

После заказа вы получите от нас сертификаты, мобильный профиль и ссылку на инструкцию по установке.

Скачайте и подпишите приложения

В программе для подписи выберите наш сертификат и профиль, подпишите ими скачанное приложение или игру.

Приложения скачиваются не из App Store, а из различных «АппТрекеров». Таких ресурсов довольно много

Установите подписанное приложение

Любым доступным способом в MacOS или Windows: через iTunes (Apple Configurator), iTools, iFunBox и подобные, а также через облачные сервисы (через Safari), вроде diawi.com

Подпись возможна только в MacOS. Для того, чтобы подписывать приложения в Windows — необходимо установить виртуальное окружение.

Подробная инструкция по установке и другая важная информация находится в разделе помощи

Если вы не хотите ставить сертификаты, но необходимо установить какое‑либо приложение, мы можем подписать его для вас

Закажите сертификат сейчас

Выпуск сертификата и регистрация — мгновенно Только у нас! *

Регистрация UDID включена в стоимость. После оформления заказа UDID вашего устройства мгновенно будет зарегистрирован в Apple Developer Program, на электронную почту будут отправлены файлы сертификатов, мобильный профиль, инструкция по установке и подписи приложений. Мы гарантируем возврат полной суммы в случае ошибок регистрации и невозможности их устранения в течение 24 часов.

Регистрация UDID производится приблизительно на один год со дня оформления заказа. Сертификат действителен на протяжении всего срока регистрации, если не отзывается компанией Apple раньше окончания срока. Подробные правила и сроки регистрации указаны в разделе «Помощь».

* Среди аналогичных сервисов в России услуга автоматической регистрации UDID и выдачи сертификатов разработчика доступна только у нас.

Потому что мы лучшие

Мгновенная автоматическая регистрация 24/7, множество способов оплаты, профессиональная поддержка, SSL‑защита данных, удобный интерфейс, тысячи довольных клиентов. И это не всё.

Источник

Подписывайте любые платные приложения для iOS

Только для пользователей Mac OS X. За небольшую плату мы даем сертификаты и мобильный профиль (всего 5 файлов),
позволяющий в течение срока действия привязки UDID (до одного года) ставить на Ваше устройство любое количество платных программ без взлома и jailbreak. Как этим пользоваться? Читайте далее.

Под iOS написаны тысячи программ, многие из которых опубликованы в AppStore и стоят немалых денег,
но при этом разработчики не дают возможности проверить их перед покупкой.
Еще больше программ вообще не попадают в официальный магазин AppStore и потому не ставятся на устройство.
А все потому, что приложения для iOS имеют специальную цифровую подпись, которую проверяет iTunes при закачке ipa-файла в девайс и сам девайс при старте приложения.
Нет сертификата от Apple — нет подписи. Нет подписи — приложение не запустится.

Неудивительно, что так популярен взлом или jailbreak операционной системы мобильного устройства,
дающий возможность ставить на него все что угодно, без контроля со стороны Apple.
Возможности взлома постепенно закрываются с выходом новых версий iOS.
Так что у пользователя есть выбор: или свежая iOS или jailbreak и установка любых программ.
А хотите и того и другого (и можно без хлеба)? Тогда читайте дальше…

iModSign и iOS App Signer

— это программы, при помощи которых приложения получают цифровую подпись, которую iTunes принимает как родную и «заливает» приложение в аппарат.
И никакого взлома iOS.

К сожалению, программы доступны только для Mac OS X, но для пользователей Windows существуют системы виртуализации, например, VmWare,
которые позволят запустить Mac OS на Windows в отдельном окне.
После подписи приложения на виртуальной машине вам достаточно будет перекинуть ее обратно в Windows и залить в iTunes.

I) Это нужно скачать и установить заранее:

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом

1) Mac OS 10.9 (Mavericks) или новее. На старых версиях Mac OS (10.7, 10.8) были замечены трудности с подписыванием — не советуем.
Если нет мака, ось можно поставить виртуально на VMWARE.

2) Command Line Tools for Xcode — они разные для каждой Mac OS.

Command Line Tools содержат библиотеки, которых обычно не хватает для подписывания и которых может просто не быть в вашей системе — без этого набора вряд ли получится что-то подписать.
Если хотите разрабатывать приложения для iOS сами, можете сразу поставить Xcode целиком.

3) Подписывающая программа iModSign или iOS App Signer.

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом

II) Это мы даем после оплаты (через форму на главной странице):

1) Два сертификата *.cer и один ключ *.p12 — все это ставится в «Связку ключей» (стандартная утилита Mac OS) в раздел «login», он же «вход»;

2) Профиль *.mobileprovision, сгенерированный для вашего UDID, который грузится в устройство (телефон, планшет, «тело») вместе с подписанными приложениями *.ipa.
Начиная с iOS 9 профиль в устройстве не отображается, хотя и продолжает работать;

3) Новинка! Еще один профиль — iOS_beta_Configuration_Profile.mobileconfig. Он нужен только, если вас интересуют бета-версии iOS.
Отправьте его себе на e-mail и откройте кликом через стандартную почтовую программу на устройстве, и беты будут загружаться сами по воздуху, как обычные обновления.
В отличие от предыдущего профиля этот имеет обновленный формат и его присутствие можно видеть в настройках устройства.

4) И главное: мы привязываем UDID к аккаунту разработчика. Без привязки UDID на конкретное устройство сертификаты бесполезны — раздавать их другим не имеет смысла. И брать чужие тоже. 🙂

III) Приложение для подписывания:

Требуется найти и скачать само требуемое приложение в «нуленом» виде (вырезана оригинальная подпись разработчика),
например, с iPhoneCake.
Просто скачать приложение с AppStore и подписать не получится. Обновиться через AppStore тоже не получится — нужно скачивать и подписывать каждое обновление вручную.
А как иначе? Это же все для тестовых целей. Хотите удобств — покупайте приложение. Поддержите разработчика — разработчик поддержит вас. 🙂
Как именно происходит процесс «вырезания-нуления», подробно описано в статье:
Как ломают приложения для iOS.

Как подготовить устройство к загрузке подписанных приложений (без этого они не будут работать, так что сделайте в первую очередь):

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом

Как проверить правильность установки:

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом
Чтобы проверить правильность установки профиля и подключения UDID,
можно скачать тестовое приложение — torrent-клиент iTransmission 5.0, уже подписанное сертификатом (только для текущего пула!).
Если оно установится и заработает на вашем устройстве, значит регистрация UDID и установка профиля прошла успешно. При этом нет гарантии, что все другие приложения удастся подписать.
Но другого способа проверки нет — регистрация внешне никак себя не проявляет, до тех пор, пока на телефоне не установлена beta.
А профиль и вовсе не виден на устройстве: в версиях iOS 9 и выше он больше не отображается в разделе «профиль», даже если установлен верно.
Вот такая особенность. Apple, похоже, любит удивлять…

Впрочем, недавно таки появился еще один косвенный признак успешной регистрации UDID: это файл iOS_beta_Configuration_Profile.mobileconfig.
Если его получилось установить в устройство и он виден в основных настройках в разделе «Профиль» (это в самом низу, раздел появляется только с профилем вместе), то все хорошо.

Как подписать приложение:

— Двойным кликом мыши установите в Связку ключей два сертификата: AppleWWDRCA.cer и ios_development.cer (устанавливать в login / вход), и один *.p12 (c паролем, который находится в файле password.txt), полученные от нас — все это будет отображаться в Связке ключей.
Это делается один раз. На вопрос об использовании ключей отвечайте «Разрешать всегда». И не меняйте настройки надежности сертификатов — оставьте все по умолчанию!

— Откройте подписывающую программу, скачанную с этого сайта, и убедитесь, что она опознала сертификат. Также укажите ей путь до мобильного профиля.

как подписать приложение ios своим сертификатом. Смотреть фото как подписать приложение ios своим сертификатом. Смотреть картинку как подписать приложение ios своим сертификатом. Картинка про как подписать приложение ios своим сертификатом. Фото как подписать приложение ios своим сертификатом

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *