Как запросить и использовать сертификат подписи кода в ServBay
Обзор
В процессе разработки и распространения программного обеспечения цифровая подпись кода — важный этап для повышения доверия пользователей и обеспечения целостности программного продукта. Подписывая свой код электронной подписью, разработчик подтверждает происхождение ПО и гарантирует, что оно не было изменено после подписи.
ServBay предоставляет удобный механизм, позволяющий разработчикам запрашивать и использовать сертификаты для подписи кода, выпущенные внутренним удостоверяющим центром (CA) в локальной среде разработки. Эти сертификаты особенно полезны для:
- Подписи ПО на этапе локальной разработки или тестирования, моделируя реальный процесс подписания.
- Подписи внутренних скриптов, инструментов или приложений для верификации их происхождения и целостности внутри команды или доверенной среды.
- Обучения и практики цифровой подписи без необходимости приобретать дорогие коммерческие сертификаты подписи кода.
Важное замечание: Сертификаты подписи кода, выданные внутренним удостоверяющим центром ServBay, НЕ являются сертификатами общедоступных доверенных центров сертификации (таких как Let's Encrypt, Comodo и др.). Операционные системы и браузеры по умолчанию им не доверяют. Следовательно, эти сертификаты НЕ предназначены для сценариев, требующих публичного доверия, например, для распространения коммерческого ПО конечным пользователям, размещения в магазинах приложений или прохождения проверки безопасности ОС (например, macOS Gatekeeper для неизвестных разработчиков). Такие сертификаты подходят для локальной разработки, тестирования или контролируемых сред.
Введение в сертификаты подписи кода
Сертификат подписи кода — это цифровой сертификат для электронной подписи исполняемых файлов, скриптов, библиотек и других компонентов программного обеспечения. Его основные задачи:
- Подтверждение личности разработчика/издателя: Сертификат содержит данные о владельце, цифровая подпись доказывает, что ПО действительно выпущено указанной организацией или разработчиком.
- Обеспечение целостности кода: При подписании создается хэш на основе содержимого кода и шифруется закрытым ключом. Во время проверки система пересчитывает хэш и сопоставляет его с расшифрованным из подписи. Любое изменение в коде приводит к несовпадению хэшей, проверка подписи не проходит.
- Повышение доверия пользователей: Операционные системы и средства безопасности предупреждают о не подписанном ПО или ПО от неизвестных издателей. Использование удостоверяющего центра (CA) в связке с ручным доверием или встроенным доверием позволяет избавиться от предупреждений и повысить уверенность пользователей.
- Борьба с распространением вредоносного ПО: Подписанный программный продукт помогает отличить легальное ПО от подделок и снижает риск распространения вредоносных программ.
Запрос сертификата подписи кода через ServBay
ServBay максимально упростил процесс получения сертификата подписи кода для локального использования.
Откройте панель управления SSL-сертификатами: В боковом меню приложения ServBay выберите пункт "SSL Certificates".
Создайте запрос на новый сертификат: На странице управления сертификатами кликните по кнопке "+" (Добавить) в правом верхнем углу.
Заполните сведения о сертификате: В окне "Request Certificate" потребуется указать следующее:
- Common Name (Общее имя): Введите название вашей организации или личное имя, к примеру:
ServBay, LLC
илиServBay Demo Developer
. - Usage Purpose (Назначение): Выберите, для чего будет использоваться сертификат. Необходимо выбрать
Code Signing
(подпись кода). - Request Method (Метод запроса): Укажите механизм выпуска — выберите
ServBay CA
, чтобы использовать встроенный центр сертификации. - Issuer (Издатель): Выберите внутренний CA, который выпустит сертификат. Обычно это
ServBay User CA
. - Algorithm (Алгоритм): Укажите криптографический алгоритм для генерации ключевой пары. Обычно предлагаются
ECC
(эллиптические кривые) илиRSA
. ECC обеспечивает большую безопасность при меньших размерах ключа. - Key Length (Длина ключа): Выберите длину ключа для выбранного алгоритма: для ECC — например,
384
, для RSA —2048
или4096
. Чем длиннее ключ, тем выше безопасность (но при этом медленнее выполнение операций). - Password (Пароль): Очень важно! Придумайте надежный пароль для защиты закрытого ключа. Он понадобится для экспорта сертификата (
.p12
файла) и работы в инструментах подписи. Запомните этот пароль — ServBay не поможет восстановить утраченный пароль. Используйте свой сложный пароль (на скриншоте указаноServBay.dev
как пример — не используйте слабый пароль в реальности).
Пример скриншота — заполните поля согласно вашим данным
- Common Name (Общее имя): Введите название вашей организации или личное имя, к примеру:
Отправьте заявку: Проверьте все данные и нажмите "Request" внизу формы. Сертификат будет автоматически выпущен этим CA.
Экспорт и использование сертификата
Получив сертификат, его нужно экспортировать в стандартном формате для использования в инструментах подписи кода. В ServBay для экспорта используется формат .p12
.
Откройте панель управления SSL-сертификатами: В боковом меню выберите "SSL Certificates".
Найдите нужный сертификат: Среди списка сертификатов найдите тот, что только что выпущен для "Code Signing".
Выберите действие «Экспорт»: Нажмите на иконку экспорта справа от строки сертификата (обычно это иконка стрелки вправо).
Укажите папку и введите пароль: В появившемся окне выберите папку на локальном диске, куда сохранить файл, обычно — формат
.p12
(PKCS#12). Этот файл содержит сертификат и закрытый ключ, защищенный паролем, который вы указывали при создании сертификата.Импортируйте в инструменты подписи кода: Импортируйте экспортированный
.p12
файл в утилиту для подписи соответствующей вашей ОС:- macOS: используйте команду
codesign
. До этого импортируйте сертификат в связке ключей macOS (Keychain Access). - Windows: используйте
signtool.exe
из Windows SDK, предварительно импортировав сертификат в менеджер сертификатов Windows. - Прочие платформы/стек: Для других языков и сборочных систем (например, Java —
jarsigner
, .NET —SignTool
, сторонние инструменты для Go) изучите документацию по импорту.p12
и подписи. Обычно вам потребуется путь к.p12
и пароль.
- macOS: используйте команду
После импорта сертификата вы сможете подписывать программные, библиотечные или драйверные файлы своим сертификатом.
Пример подписания кода с помощью сертификата (macOS)
Пример демонстрирует, как подписать бинарный файл на macOS с помощью codesign
и сертификата .p12
, экспортированного из ServBay.
Предполагается, что вы уже импортировали файл .p12
в Keychain Access и ввели правильный пароль.
# 1. Создайте простой исходный файл на C для теста подписания
# Сохраните следующий код как test.c
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. Скомпилируйте файл C в исполняемый бинарник
# -o /tmp/test — сохранить как /tmp/test
gcc test.c -o /tmp/test
echo "Компиляция успешна, создан /tmp/test"
# 3. Найдите доступные идентификаторы для подписи кода
# -v — подробный вывод
# -p codesigning — фильтрация сертификатов для подписи кода
# Ищите необходимый Common Name или hash сертификата (пример: 99C183BC3796067FAFBA6F232D1C3C3425DAABDA)
security find-identity -v -p codesigning
# Пример вывода:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# Запомните hash или Common Name вашего сертификата ("ServBay Demo Developer")
# 4. Подпишите бинарный файл выбранным сертификатом
# -f — заменить существующую подпись (если есть)
# -s — идентификатор: hash или уникальный Common Name
# --timestamp — добавить временную метку (рекомендуется для отслеживания действия подписи)
# /tmp/test — путь к файлу для подписи
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# Или по hash:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test подписан с помощью сертификата"
# 5. Проверьте корректность подписи
# -dvvv — подробная информация о подписи
codesign -dvvv /tmp/test
# В поле "Authority" должно быть указано ваше имя и цепочка ServBay CA
# Проверьте поля "Signature size" и "CDHash"
# Должен присутствовать "Timestamp"
# Пример части вывода:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=Nov 7, 2024 at 18:26:48 (пример даты)
# 6. Измените содержимое файла, чтобы сломать подпись
# Впишите случайные данные в файл — это изменит hash
echo "abcde" >> /tmp/test
echo "Cодержимое /tmp/test изменено"
# 7. Проверьте подпись вновь
# Теперь проверка должна завершиться ошибкой
codesign -dvvv /tmp/test
# Пример вывода:
# /tmp/test: code object is not signed at all
# Либо похожее сообщение об ошибке: подпись недействительна, так как файл изменен после подписи.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Пояснения:
security find-identity
— ищет доступные сертификаты для подписи, ищите свой (обычно по имени или hash).codesign -f -s "Your Identity"
— команда для подписи. Параметр--timestamp
позволяет связать подпись с достоверным временем, удостоверяющим метку даже после истечения срока сертификата.codesign -dvvv
— проверяет подпись максимально подробно: действительность сертификата, цепочку доверия и соответствие подписи хэшу файла.- В последнем шаге (после изменения файла) показано, как система гарантирует целостность: любые изменения приводят к аннулированию подписи.
Продление сертификата
Сертификаты подписи кода ServBay выдаются с ограниченным сроком действия (обычно 800 дней). До истечения срока вы можете продлить сертификат через панель SSL-сертификатов ServBay.
- Откройте панель SSL-сертификатов.
- Найдите нужный для продления сертификат.
- Выберите действие «Продлить»: Кликните по иконке с круговой стрелкой справа от сертификата.
- Подтвердите продление: После клика ServBay выпустит новый сертификат на 800 дней с текущей даты.
Удаление сертификата
Если сертификат вам больше не нужен, вы можете удалить его из ServBay.
- Откройте панель SSL-сертификатов.
- Найдите сертификат для удаления.
- Выберите действие «Удалить»: Кликните по значку корзины справа от строки сертификата.
- Подтвердите удаление: На всплывающем окне выберите "Delete" и подтвердите действие. Обратите внимание: после удаления восстановить сертификат невозможно.
Часто задаваемые вопросы (FAQ)
В: Сертификаты подписи кода, выданные ServBay, бесплатны?
О: Да, сертификаты, выпущенные внутренним CA ServBay — это встроенная функция (без дополнительных расходов).
В: Можно ли использовать эти сертификаты для подписи коммерческого ПО и распространения среди пользователей?
О: Нет. Сертификаты ServBay — это внутренние самоподписанные сертификаты, которым ОС и магазины по умолчанию не доверяют. Они годятся только для тестов и внутренних задач. Для публичного распространения коммерческого софта приобретайте сертификаты подписи кода у признанных удостоверяющих центров.
В: Я забыл пароль, установленный при экспорте .p12
файла. Как быть?
О: ServBay не хранит ваш пароль к приватному ключу. В случае утери пароля вы не сможете экспортировать или использовать закрытый ключ данного сертификата — удалите его и создайте новый.
В: Можно ли добавить ServBay User CA в доверенное хранилище ОС?
О: Да. Для этого экспортируйте сертификат ServBay User CA и вручную импортируйте его в список доверенных корневых сертификатов операционной системы или браузера.
Итоги
Функционал подписания кода в ServBay облегчает тестирование цифровых подписей локальных программ и внутренних инструментов. Теперь вы знаете, как запрашивать, экспортировать и использовать такие сертификаты. Обратите внимание: данные сертификаты служат исключительно для разработки и тестирования и не подходят для сценариев, где необходима публичная цепочка доверия.
Если возникнут вопросы или сложности при работе, обратитесь к официальной документации ServBay или сообществу.