- Adobe air signing
- Android
- Code signing for apple
- Java code signing
- Kernel mode signing
- Microsoft authenticode
- Microsoft office vba signing
- Microsoft windows phone
- Qualcomm brew
- Какие бывают виды code signing сертификатов, и чем отличаются?
- Несколько слов про timestamp.
- Несколько советов.
- Номенклатура сертификатов
- Особенности бланков сертификатов соответствия
- Откуда берутся сертификаты?
- Печать бланков сертификатов, свидельств, грамот. индивидуальный дизайн on-line бесплатно.
- Помощь с электронной подписью, faq ответы на вопросы
- Преимущества добровольной сертификации
- Процесс подписи кода.
- Процесс проверки подписанного кода.
- Словарный запас
- Сценарий №1 — найти следующего в связке
- Центр сертификации
- Подведем итог
Adobe air signing
Для подписи файлов .air
Требуется для всех приложений, основанных на AIR
Android
Для подписи и оптимизации .apk файлов для платформы Android
Code signing for apple
Позволяет разработчикам подписывать программы для Mac OS, а также обновления для программного обеспечения
Java code signing
Для подписи Java апплетов. Позволяет подписывать .jar файлы и Java приложения для настольных и мобильных устройств.
Распознается Java Runtime Environment (JRE)
Kernel mode signing
Сертификаты разработчика Kernel-Mode позволяют подписывать, так называемые kernel-mode приложения и драйвера устройств. 64 битная версия Windows Vista и Windows 7 требуют, чтобы все kernel-mode приложения были подписаны сертификатом и доверенного центра сертификации.
Microsoft authenticode
Для подписи 32 и 64 битных файлов (.exe, .cab, .dll, .ocx, .msi, .xpi и .xap файлы). Также позволяет подписывать код для Microsoft® Office, Microsoft VBA, Netscape Object Signing и Marimba Channel Signing.
Поддерживает приложения на Silverlight 4
Microsoft office vba signing
Подписывает VBA объекты, скрипты и макросы для файлов Microsoft Office .doc, .xls, и.ppt
Для Microsoft Office и дополнений, которые используют VBA
Microsoft windows phone
Для цифровой подписи приложений для Windows Phone и Xbox 360. Требуется для сервиса Microsoft App Hub
Qualcomm brew
Для тех, кто разрабатывает приложения под платформу BREW (Binary Runtime Environment for Wireless)
Какие бывают виды code signing сертификатов, и чем отличаются?
Прежде всего рассмотрим сертификаты, по центрам сертификации, которые их выпускают.
Лучше всего различия между сертификатами от разных центров сертификации показывает сводная табличка.В колонках указаны названия центров сертификации, а в в строках тип сертификата или технология/платформа для которой он используется.
стоит уточнить, что не все центры сертификации дают полную информацию о платформах, на которых работают их сертификаты, поэтому плюсом отмечены только те платформы, поддержка которых в явном виде заявлена центром сертификации.
Несколько слов про timestamp.
Timestamp или временная метка используется для указания времени, когда цифровая подпись была сделана. Если такая метка присутствует, то приложение, которое проверяет подпись проверит был ли сертификат, связанный с подписью валидным на момент подписи.
Пример:Сертификат действителен с: 01.01. 2008Сертификат действителен до: 31.12.2021Подпись сделана: 04.07.2009Подпись проверена: 30.04.2021
C временной меткой (timestamp) подпись пройдет проверку, поскольку на момент подписи сертификат был действителен. Без такой метки сертификат не пройдет проверку, поскольку на момент проверки у сертификата уже закончился срок.То есть такая метка позволяет использовать подписанный код, даже после срок окончания сертификата.
Несколько советов.
- Заявку на сертификат желательно оформлять с той же машины, с которой вы потом будете выполнять подпись ПО.
- Большинство центров сертификации рекомендуют генерировать заявку на сертификат через Internet explorer, хотя при генерации заявок через другие браузеры у нас также не было проблем.
Буду рад ответить на вопросы по сертификатам разработчика, в рамках своей компетенции, так как сам разработчиком не являюсь.Также буду рад дополнениям и уточнениям от тех, кто такими сертификатами пользуется.
UPD: добавил важную информацию про timestamp (временную метку), спасибо TolTol и crea7or
Номенклатура сертификатов
Давайте рассмотрим, какие сертификаты X.509 встречаются в природе, если рассматривать их по расположению в
пищевой
цепочке доверия.
По степени
крутизны
дороговизны и надежности сертификаты делятся на 3 вида:
DVOVEV
Особенности бланков сертификатов соответствия
Существует два вида сертификатов соответствия – созданный добровольно изготавливается в синих цветах, обязательный – желтый. Текстовое наполнение универсальное. Срок действия сертификата – от 1 до 5 лет в зависимости от продукции.
В некоторых моментах наличие документа может стать решающим для решения спорной ситуации в лучшую сторону. Также, добровольная сертификация помогает оказаться в выгодном свете по сравнению с конкурентами.
Откуда берутся сертификаты?
Еще совсем недавно было всего 2 способа заполучить X.509 сертификат, но времена меняются и с недавнего времени есть и третий путь.
- Создать свой собственный сертификат и самому же его подписать. Плюсы — это бесплатно, минусы — сертификат будет принят лишь вами и, в лучшем случае, вашей организацией.

- Приобрести сертификат в УЦ. Это будет стоить денег в зависимости от различных его характеристик и возможностей, указанных выше.
- Получить бесплатный сертификат LetsEncrypt, доступны только самые простые DV сертификаты.
Для первого сценария достаточно пары команд и чтобы 2 раза не вставать создадим сертификат с алгоритмом эллиптических кривых. Первым шагом нужно создать закрытый ключ. Считается, что шифрование с алгоритмом эллиптических кривых дает больший выхлоп, если измерять в тактах CPU, либо байтах длины ключа. Поддержка ECC не определена однозначно в TLS < 1.2.
openssl ecparam -name secp521r1 -genkey -param_enc explicit -out private-key.pemДалее, создает CSR — запрос на подписание сертификата.
openssl req -new -sha256 -key private.key -out server.csr -days 730И подписываем.
openssl x509 -req -sha256 -days 365 -in server.csr -signkey private.key -out public.crtРезультат можно посмотреть командой:
openssl x509 -text -noout -in public.crtOpenssl имеет огромное количество опций и команд. Man страница не очень полезна, справочник удобнее использовать так:
openssl -help
openssl x509 -help
openssl s_client -helpРовно то же самое можно сделать с помощью java утилиты keytool.
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048Следует серия вопросов, чтобы было чем запомнить поля owner и issuer
What is your first and last name?
What is the name of your organizational unit?
What is the name of your organization?
What is the name of your City or Locality?
What is the name of your State or Province?
What is the two-letter country code for this unit?
Is CN=Johnnie Walker, OU=Unknown, O=Unknown, L=Moscow, ST=Moscow, C=RU correct?Конвертируем связку ключей из проприетарного формата в PKCS12.
keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12Смотрим на результат:
Alias name: selfsigned
Creation date: 20.01.2021
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Johnnie Walker, OU=Unknown, O=Unknown, L=Moscow, ST=Moscow, C=RU
Issuer: CN=Johnnie Walker, OU=Unknown, O=Unknown, L=Moscow, ST=Moscow, C=RU
Serial number: 1f170cb9
Valid from: Sat Jan 20 18:33:42 MSK 2021 until: Tue Jan 15 18:33:42 MSK 2021
Certificate fingerprints:
MD5: B3:E9:92:87:13:71:2D:36:60:AD:B5:1F:24:16:51:05
SHA1: 26:08:39:19:31:53:C5:43:1E:ED:2E:78:36:43:54:9B:EA:D4:EF:9A
SHA256: FD:42:C9:6D:F6:2A:F1:A3:BC:24:EA:34:DC:12:02:69:86:39:F1:FC:1B:64:07:FD:E1:02:57:64:D1:55:02:3D
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 30 95 58 E3 9E 76 1D FB 92 44 9D 95 47 94 E4 97 0.X..v...D..G...
0010: C8 1E F1 92 ....
]
]Значению ObjectId: 2.5.29.14 соответствует определение ASN.1, согласно RFC 3280 оно всегда non-critical. Точно так же можно узнать смысл и возможные значения других ObjectId, которые присутствуют в сертификате X.509.
subjectKeyIdentifier EXTENSION ::= {
SYNTAX SubjectKeyIdentifier
IDENTIFIED BY id-ce-subjectKeyIdentifier
}
SubjectKeyIdentifier ::= KeyIdentifierПечать бланков сертификатов, свидельств, грамот. индивидуальный дизайн on-line бесплатно.
Вам требуется изготовить бланк сертификата (свидетельства, подарочного
сертификата, грамоты, благодарности, благодарственного письма…), причем
индивидуального дизайна с нанесением логотипа компании. Да тираж небольшой, и
бюджет ограничен, и нужно «прямо сейчас» или даже «вчера». Разработка дизайна
дизайнером занимает, как правило, несколько дней, да и оплачивать ее надо, в
среднем 5000 рублей за дизайн, бесплатную разработку дизайна фирмы обычно
предлагают при тираже от 1000 экземпляров.
Конечно, Вы можете заказать нанесение логотипа на готрвый бланк свободного
назначения, но этом случае, почти наверняка, цвет рамки будет отличаться от
цвета логотипа, и главное, в этом случае дизайн бланка не будет индивидуальным.
Мы предлагаем On–Lineразработку дизайна специально разработанной нами
программой, которая позволяет сделать дизайн за несколько минут. Робот-дизайнер
рисует макет бланка максимум за минуту и ему не надо платить зарплату. В простейшем
случае от вас требуется только задать заголовок (сертификат,
свидетельство…)загрузить логотип в
формате .JPG, если требуется, и далее нажимать
кнопку «НОВЫЙ ДИЗАЙН», пока программа не выдаст Вам то, что Вас устроит. После
этого нажимайте кнопку «ЗАКАЗАТЬ ПЕЧАТЬ ВЫСОКОМ КАЧЕСТВЕ». В высоком качестве
распечатаем, естественно, без метки “my-sertif.ru”. Мы печатаем бланки
как на бумаге с водяными знаками, в том числе и цветной, так и на плотной бумаге
плотностью до 300 г/м2. На странице On-Line генератора дизайна в правом вехнем
углу есть переключатель выбора бумаги.
Можно также сгенерировать и добавить на бланк QR код и текст, загрузив файл с
текстом в формате PDF.
Вы также можете за 250 р купить макет сгенерированного бланка в электронном
виде, в формате jpg в высоком разрешении без защитной метки ADS-Blank.
По ходу дела вы можете временно сохранять понравившиеся дизайны бланка на время
работы на сайте, нажав кнопку “отложить”, чтобы затем выбрать из них тот,
который Вы закажете.
Для продвинутых пользователей предусмотрена возможность
выбора типа гильошированной рамки, гильошированной сетки, стиля заголовка,
цветовой гаммы рамки и сетки. Опытный пользователь легко разберется в назначении
кнопок. Если вас все же не устроит машинный дизайн, то звоните нам, пишите на
электронную почту, и заказывайте дизайн ручной работы.
Программа на сайте выдает макет в низком разрешении, достаточном для просмотра
на экране, но недостаточном для печати бланка в высоком качестве. После
оформления заказа формула дизайна автоматически отсылается в нашу типографию,
где по ней другая программа делает макет высокого разрешения и печатаются
заказанные бланки. Получить готовую продукцию можно в районе станции метро
Курская по адресу
Лялин переулок д.4
. Обращаем внимание, программа генерации дизайна не берет готовые рамки и
сетки, не берет даже готовые элементы рамок и сеток, а генерирует их по заданным
математическим алгоритмам. Выбирая тип гильошированной рамки или сетки
пользователь выбирает не готовую рамку или сетку, а только математический
алгоритм ее создания.Генерация рамок и сеток производится с учетом параметров,
задаваемых генератором случайных чисел, так что вероятность точного повторения
дизайна при новом нажатии кнопки «НОВЫЙ ДИЗАЙН» сравнима с вероятностью крупного
выигрыша в «Спортлото», поэтому каждый новый дизайн можно считать
индивидуальным. Мы постоянно будем добавлять новые алгоритмы генерации рамок и
сеток для бланков сертификатов, свидетельств, грамот…
Далее можете перейти по ссылке
ДИЗАЙН БЛАНКА ON-LINE и
начать создание Вашего бланка.
ВНИМАНИЕ! Данные бланки не являются защищенной полиграфической продукцией. Мы не
печатаем государственных бланков (свидетельство о смерти, свидетельство о
собственности ….). Мы также вправе отказать в исполнении заказа без объяснения
причин, если у нас возникнет обоснованное подозрение, что отпечатанные бланки
будут использованы для совершения противоправных действий ( предусмотренных
ст.159 УК РФ «Мошенничество», ст 327 УК РФ «Использование заведомо подложного
документа» и другими статьями УК РФ).
Помощь с электронной подписью, faq ответы на вопросы
<p>Корректная работа сертификата ключа проверки ЭП возможна в средах, соответствующих требованиям производителя криптографических решений ООО «КРИПТОПРО» для программных продуктов КриптоПро CSP 4.0 и выше, отраженных в «Формуляре» соответствующей версии, размещенном на сайте https://www.cryptopro.ru, а также в формулярах для КриптоПро ЭЦП Browser plug-in, с которыми можно <a href=”https://cpdn.cryptopro.ru/default.asp?url=content/cades/plugin.html” target=”_blank” rel=”noopener”>ознакомиться по ссылке</a>.</p>
<p>Также, в зависимости от типа носителя для хранения ключей ЭП, потребуются:</p>
<ol>
<li>Наличие USB-порта (при использовании в качестве носителя токена или флеш-карты</li>
<li>Наличие дисковода 3,5” (в случае использования в качестве носителя дискеты).</li>
</ol>
<p>Если на одном компьютере планируется использовать сертификат ключа проверки электронной подписи на носителе и программы, которые используют средства криптографической защиты информации (например, Клиент-Банк, Интернет-Банк), убедитесь, что они не используют криптопровайдеры, отличные от КриптоПро CSP. Использование разных криптографических средств на одном компьютере может привести к неработоспособности программ и системы.</p>
Преимущества добровольной сертификации
Синий сертификат изготавливается добровольно. А чтобы он был создан по всем правилам и в высоком качестве – обращаются в типографию «Профф Принт».
Преимущества изготовления бланка сертификата у нас:
- Возможность доработки бланка до готового документа, включая нанесение элементов фирменного стиля, текста стилем типографической печати, тиснения, персональных защитных марок.
- Использование пустых готовых бланков сертификатов с защитой.
- Соблюдение нормативных требований к документам.
- Использование современных технологии защищенной полиграфии.
- Профессиональная защита документов, которая поможет сохранить репутацию и защитит компанию от мошенников.
Заказ на печать бланка сертификата соответствия выполним в минимальные сроки в отличном качестве. Документ не вызовет вопросов у конкурентов, посредников и компаньонов.
Процесс подписи кода.

- Издатель (разработчик) запрашивает Code Signing сертификат у центра сертификации
- Используя SIGNCODE.EXE или другую утилиту для подписи кода издатель, cоздает хеш кода, используя алгоритмы MD5 или SHA
- Кодирует хеш, с помощью приватного ключа
- Создает пакет, который включает в себя: код, зашифрованный хеш и сертификат издателя
Процесс проверки подписанного кода.

- Пользователь скачивает или устанавливает подписанное ПО и платформа или система пользователя проверяет сертификат издателя, который подписан корневым приватным ключем центра сертификации
- Система запускает код, используя тот же самый алгоритм создания хеша, как издатель и создает новый хеш
- Используя публичный ключ издателя, который содержится в сертификате, система расшифровывает зашифрованный хеш
- И сравнивает между собой 2 хеша
Словарный запас
Определение X.509 сертификатов есть в архиве ITU-T
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3Для того, чтобы досконально понять обозначения и синтаксис, придется читать спеки X.680 редакции 2008 г., где есть полное описание ASN.1. В понятиях ASN.1SEQUENCE обозначает примерно то же самое, что и struct в Си. Это может сбить с толку, ведь по семантике оно должно было соответствовать скорее массиву. И тем не менее.
Стандарт X.690 определяет следующие правила кодирования структур данных, созданных в соответствии с ASN.1: BER (Basic Encoding Rules), CER (Canonical Encoding Rules), DER (Distinguished Encoding Rules). Есть даже XER (XML Encoding Rules), который на практике мне никогда не встречался.
Да, но для чего нужны сертификаты X.509, которые доставляют столько головной боли? Первая и основная функция сертификатов X.509 — служить хранилищем открытого или публичного ключа PKI (public key infrastructure). К этой функции нареканий нет, а вот со второй не все так однозначно.
Вторая функция сертификатов X.509 заключается в том, чтобы предъявитель сего был принят человеком, либо программой в качестве истинного владельца некоего цифрового актива: доменного имени, веб сайта и пр. Это получается по-разному, далеко не все сертификаты имеют высокую ликвидность, если пользоваться финансовой терминологией.
Сценарий №1 — найти следующего в связке
Связка сертификатов — Объединение нескольких X.509 сертификатов в один файл, чаще всего в формате PEM. Связка передается по сети в момент протокола рукопожатия SSL/TLS.
Самый сок начинается, когда имеете дело со связкой сертификатов, a. k. a certificate chain. Часто просматривая лапшу в связке ключей jks непросто понять как найти родительский сертификат, когда там россыпь новых и старых сертификатов на несколько доменных имен.
Центр сертификации
Когда разработчик запрашивает цифровой сертификат — центр сертификации идентифицирует его и выпускает сертификат, связанный с корневым сертификатом центра сертификации. Платформы и устройства содержат в себе корневой сертификат соответствующего центра сертификации.
В случае если хеши не совпадают вы получите ошибку при запуске такого ПО — это может означать, что ПО было модифицировано вирусом или злоумышленником.
Когда ПО расшифровывает цифровую подпись, оно проверяет также корневой сертификат в системе, источник проверенной информации. В случае использования самоподписного сертификата, вы получите ошибку: «издатель не может быть проверен». Поэтому важно использовать сертификаты того центра сертификации, чьи корневые сертификаты уже установлены в системе у предполагаемого пользователя программы.
О самом процессе верификации организации рассказывать не буду, так как он такой же как и для SSL сертификатов с валидацией организации, о чем мы уже говорили в прошлой статье.
Подведем итог
Для выбора сертификата сначала нужно выбрать центр сертификации, который выпускает сертификаты под нужную вам платформу, а дальше выбор по сути сводится к выбору по цене и по известности центра сертификации, зачастую клиенты выбирают те центры сертификации, с которым уже работали ранее.
