Рубрики
Uncategorized

Руководство разработчика к подписанию кода

Сертификаты подписания кода великолепны! Они позволяют разработчику в цифровом подписании своих двоичных файлов наносят … Теги с безопасностью, DevOps, CodeNewie.

Сертификаты подписания кода великолепны! Они позволяют разработчику в цифровом подписании своих двоичных файлов застраховать, что они не были изменены перед установкой. Не так здорово — это путь, подписав сертификаты подписания кода во многих организациях. Это часто начинается с инициативы OPS, а затем Devs. Народные народные повлияли больше всего, остаются вне цикла, пока не будет принято решение. Никогда не весело, чтобы иметь что-то изголовочное на вашем рабочем процессе. Однако нет его отрицания, однако — некоторые времена выполнения требуются для интеграции сертификатов подписания кода в рабочий процесс (хотя большинство IDES облегчают, чем когда-либо). Но что, если вы должны внезапно использовать и тесно понимать сертификаты подписания кода в дополнение ко всем остальным, вы пытаетесь сделать этот спринт? (Если вы отправляете приложение в магазин Apple, например, цифровая подпись — это требование). Надеюсь, это руководство достаточно, чтобы вы начали.

Во-первых, что делает сертификат подписания кода даже? Многое, как и любой сертификат SSL/TLS, сертификат подписания кода состоит из закрытого ключа (известный только машиной сборки), а также открытый ключ, подписанный доверенной третьей стороной (думаю, что Thawte или Comodo). Машина сборки принимает хеш двоичного типа, а затем подписывает, что хэш, прикрепляя его к файлу таким образом, который можно прочитать клиентом, который, в свою очередь, требует собственного хэша и сравнивает его против сертификата. Visual Studio, Eclipse, и, в значительной степени любую другую IDE, вы можете подумать о приготовлении документации о том, как добавить сертификат подписания кода к вашему проекту. В то время как сертификат подписания кода дает некоторую важную значительную выгоду безопасностью, большую часть времени импульс для реализации этой технологии, так что пользователи не будут предложены сообщение о приложении потенциально небезопасно.

Проблемы и дополнения, к сожалению, хотя и просто на практике сертификаты подписания кода имеют пару ключевых «gotchas». Во-первых, в отличие от обычного сертификата, это не имеет смысла для сертификата подписания кода, чтобы иметь жесткую и быструю дату истечения срока годности. В то время как в определенных обстоятельствах может быть ценным, чтобы приложение перестало работать после определенной даты, большую часть времени это недопустимо. Это то, где входят серверы с тиснением времени. Когда вы указываете сервер отметки времени (обычно размещается любым эмитентом сертификата подписания кода), клиент сравнивает истечение срока действия с датой подписания кода вместо текущей даты. Убедитесь, что, когда вы подписываете свои двоичные файлы, которые вы указываете сервер отметки времени. В противном случае ваши пользователи могут быть для грубых сюрпризов.

Другая главная Gotcha с подписанием подписания кода — фрагментация рынка. Microsoft использует стандарт аутентиокода ( https://docs.microsoft.com/en-us/windows-hardware/drivers/install/authenticode ), а сертификаты запрашиваются через утилиту SignTool. Microsoft принимает только расширенные сертификаты проверки (например, для драйверов Windows) из Symantec, Certum, доверенности, GlobalSign, SectiGo и DigiCert. Apple на самом деле выдает собственные сертификаты подписания кода, называемые «сертификатами распределения» и код связи на учетную запись разработчика Apple. Приложения Java имеют еще один набор требований и подписаны с использованием коммунальных услуг KeyTool и Jassigner, в комплекте с вашим JDK. Java поддерживает собственный перечисленный доверенный CAS, который зависит от вашего распределения JRE. Код должен быть подписан доверенным CA, но если ваш код работает на неуправляемых клиентах, часто разумно выбрать широко доверенный CA, такой как Digicert или Thawte для максимальной совместимости.

Часто организация реагирует на эту фрагментацию, приобретая пару различных типов сертификатов подписания кода в случае, если он должен быть быстро поменяться за другой, и код перенесены. Свидетельство о сертификатах — хороший выбор для этого. Они предлагают несколько сертификатов подписания кода от разных поставщиков через одну панель стекла. Смотрите: https://www.ssltrust.com/ssl-certificate/Code-signing Отказ

Одна удивительно полезная стратегия заключается в использовании сертификатов подписания кода, чтобы избежать ошибки человека при развертывании кода в среду Dev и Test. Тестовые среды, в отличие от производственных продуктов, обычно обращаются к управляемым конечным точкам, где корневой сертификат находится под контролем вашей организации. Просто путем выдачи другого внутреннего CA на окружающую среду вы можете предотвратить случайное развертывание неправильного кода (N.B. Вам придется убедиться, что ваш инструмент CI/CD не продолжается с установкой, даже если установщик не подписан).

Другое, что нужно рассмотреть, так это то, как «глубоко» вы хотите, чтобы ваш код подписался. Большинство окружающей среды требуют только для того, чтобы установщик был подписан в цифровой основе, но есть значение в цифровом подписи всех исполняемых исполнителей, а не только бинарный установщик. Это поможет предотвратить эвристические сканеры на основе эвристики от промежуточного кода в качестве вредоносных программ в неуправляемых средах.

В целом, обязательно рассмотрим жизненный цикл сертификата для каждого вида кода, который вы пытаетесь развернуть, и рассмотреть возможность создания дела для покупки HSM для хранения частных ключей, необходимых для подписания кода. Если вы держите в виду вышеупомянутой, переключение от NENSIGNIED CODE для автоматического подписанного кода — это ветер.

Оригинал: «https://dev.to/pixelpaulaus/a-developer-s-guide-to-code-signing-certificates-2fp5»