Подписывание приложений
Метаданные
Contents |
Для чего подписывать приложения ?
Подписанное приложение - это приложение, которое подписано с помощью закрытого ключа. Для каждого закрытого ключа существует соответствующий открытый ключ и сертификат, например “ACS Publisher ID” сертификат или сертификат разработчика или собственноручно созданный сертификат (self-signed сертификат).
В момент установки подписанного приложения на устройство, установщик приложений проверяет подпись и публичный ключ с помощью корневого сертификата (root certificate) который содержит устройство. Если сертификат (с помощью которого подписано приложение) происходит от корневого - приложение считается надежным, если же приложение подписано с помощью ключа, которому соответствует собственный сертификат (self-signed, не происходит от корневого) - приложение считается ненадежным.
При установке "надежных" приложений выдается меньше предупреждений, приложение может получить больший набор возможностей (capabilities). При запуске подписанных Java-мидлетов от пользователя требуется меньше подтверждений при попытке доступа приложения к защищенным Java API.
Терминология
- Подписывание - техническое действие, создание цифровой подписи программного пакета (SISX-файл S60, JAR-файла для Java) с помощью закрытого ключа. Каждой паре ключей (закрытый и открытый) соответствует сертификат, который может быть издан каким-либо центром сертификации, либо изготовлен собственноручно (self-signed). То, каким образом создан сертификат, на создание подписи никак не влияет, однако в дальнейшем, на основе готовой подписи будет вычисляться уровень доверия.
- Сертификат - содержит информацию, идентифицирующую держателя, от которого исходит сертификат. Сертификаты издаются центрами сертификации (certification authority, издателями - Nokia или Verisign например), и подтверждают что пара ключей (открытый и закрытый) принадлежат объекту ('subject'), описанному в сертификате. Если сертификат создан собственноручно (self-signed) - тогда он не несет никакого уровня доверия, причиной его создания является техническая необходимость.
- Сертификация означает, что приложение предварительно было протестировано согласно каким-то критериям, после чего было сертифицировано. Приложение подписывается с помощью ключа, сертификат которого происходит от корневого сертификата, который есть в конечном устройстве. Когда пользователь устанавливает такое приложение, устройство считает его "надежным". Установщик приложений проверяет цифровую подпись и убеждается в том, что приложение получено из надежных источников. Если приложение не сертифицировано (устройство не содержит соответствующего корневого сертификата), пользователь получит предупреждение во время установки. В предупреждении будет сказано, что приложение получено из ненадежных источников.
- Выпуск сертификата - издание сертификата сертификационным центром для определенной пары ключей (открытый и закрытый). Это не сертификация приложения. Сертификационный цент и центр тестирования (который проверяет и сертифицирует приложения) это разные вещи.
- Надежный программный пакет подписывается ключом, сертификат которого происходит от корневого сертификата. Пакеты, подписанные собственным сертификатом (self-signed) или неподписанные вообще, считаются ненадежными.
Договоренности в S60
При работе с платформой S60 важно понимать, что подписывать приложения необходимо, в то время как сертификация не является обязательной. Наличие электронной подписи - это технически необходимый момент, однако издание соответствующего сертификата - это момент необязательный. Обычно, для получения некоторых возможностей (capabilities), требуется, чтобы программный пакет был сертифицирован (подписан ключом, которому соответствует надежный сертификат).
Тестирование и подпись приложений
Во время тестирования приложения с помощью распространенного в отрасли тестирующего ПО (Symbian Signed или Java Verified) центр тестирования берет на себя проведение сертификации (подписывает приложение с помощью ключа, которому соответствует надежный сертификат) после того, как тесты будут пройдены.


(no comments yet)