Подпись кода
Каждый релиз EPPlus цифрово подписан сертификатом кодовой подписи, выданным GlobalSign компании EPPlus Software AB. Это относится ко всем распределённым сборкам, а также к самому пакету NuGet, и позволяет независимо проверить, что используемое вами устройство было создано и опубликовано нами.
Почему мы подписываем наши релизы
Атаки на цепочку поставок программного обеспечения — когда злоумышленник вмешивается в пакет между издателем и конечным пользователем — становятся растущей угрозой. Цифровая подпись даёт криптографическую гарантию, что скачанный вами файл идентичен тому, что мы создали и выпустили. Также подтверждается идентификация издателя: подпись может быть создана только обладателем сертификата, выданного EPPlus Software AB доверенным сертификатным центром. Если файл был изменён после подписания или если он никогда не был подписан нами, проверка не пройдёт.
Что подписано
Все сборки, включённые в релиз EPPlus, подписаны на всех поддерживаемых целевых фреймворках. Пакет NuGet подписывается отдельно как подпись на уровне пакета, охватывающая всё содержимое пакета.
Точный набор сборок и целевых фреймворков, включённых в данный релиз, перечислен в Программном билле материалов для этого выпуска.
Сертификат
Сертификат подписания выдаётся компанией GlobalSign, глобально доверенным органом сертификации. Сертификат надёжно хранится в аппаратно-защищённом хранилище ключей и доступен только в рамках нашего автоматизированного процесса выпуска — приватный ключ никогда не покидает защищённую среду.
| Выдано | EPPlus Software AB |
|---|---|
| Выпущено | GlobalSign GCC R45 CodeSigning CA 2020 |
| Алгоритм дайджеста | SHA-256 |
| Полномочия по временной метке | GlobalSign TSA for Advanced - G4 |
Все подписи содержат проверенную временную метку от GlobalSign. Это гарантирует, что подписи остаются проверяемыми даже после продления сертификата, если подпись была создана в период действия сертификата. Обратите внимание, что приведённые выше данные сертификата отражают текущий сертификат подписания — эмитент и орган по временной метке могут меняться при продлении.
Контрподпись репозитория NuGet
Помимо собственной подписи автора, NuGet.org автоматически добавляет контрподпись репозитория при публикации пакета. Эта контрподпись выдана NuGet.org и подтверждает, что посылка была загружена зарегистрированными владельцами пакета EPPlus на NuGet.org. При проверке пакета вы увидите обе подписи — авторскую подпись от EPPlus Software AB и контрподпись репозитория из NuGet.org.
Вы можете независимо проверить зарегистрированных владельцев пакета EPPlus на nuget.org/packages/EPPlus.
Если проверка не проходит
Неудачная проверка означает, что файл был изменён после подписания, отсутствует подпись или что цепочка сертификатов нельзя доверять. Не используйте упаковку или сборку, которая не проходит проверку. Если у вас есть основания полагать, что опубликованный релиз EPPlus был изменён, пожалуйста, сообщите нам об этом немедленно.
Ознакомьтесь с нашей политикой раскрытия уязвимостей для инструкций по связи.
Проверьте релиз самостоятельно
Вы можете независимо проверить подпись на любом релизе EPPlus с помощью стандартных инструментов, не полагаясь на нас.
Проверка пакета NuGet
Самый простой способ проверить релиз EPPlus — проверить подпись пакета NuGet с помощью .NET CLI. Это работает на Windows, Linux и macOS.
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
Успешно проверенный пакет покажет как подпись автора от EPPlus Software AB, так и контрподпись репозитория из NuGet.org:
X.509 certificate chain validation will use the default trust store selected by .NET for code signing.
X.509 certificate chain validation will use the default trust store selected by .NET for timestamping.
Verifying EPPlus.<version>
Signature Hash Algorithm: SHA256
Signature type: Author
Verifying the author primary signature with certificate:
Subject Name: CN=EPPlus Software AB, O=EPPlus Software AB, L=Stockholm, C=SE
Issued by: CN=GlobalSign GCC R45 CodeSigning CA 2020, O=GlobalSign nv-sa, C=BE
Signature type: Repository
Service index: https://api.nuget.org/v3/index.json
Owners: EPPlusSoftware, jankallman, swmal
Successfully verified package 'EPPlus.<version>'.
Проверка сборки
В Windows отдельные сборки также можно проверять напрямую с помощью PowerShell. Это проверяет как криптографическую подпись, так и цепочку доверия сертификатов с помощью хранилища доверия Windows.
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
Действительная подпись покажет статус «Действительный» и сертификат подписанта, выданный EPPlus Software AB компанией GlobalSign:
SignerCertificate : [Subject]
CN=EPPlus Software AB, O=EPPlus Software AB, L=Stockholm, C=SE
[Issuer]
CN=GlobalSign GCC R45 CodeSigning CA 2020, O=GlobalSign nv-sa, C=BE
...
Status : Valid
StatusMessage : Signature verified.
SignatureType : Authenticode
Верификация на уровне сборки с помощью PowerShell доступна только на Windows. На Linux и macOS мы рекомендуем проверить пакет NuGet с помощью dotnet nuget verify, как описано выше, который работает на всех платформах.