Assinatura de Códigos
Cada lançamento da EPPlus é assinado digitalmente com um certificado de assinatura de código emitido pela GlobalSign para a EPPlus Software AB. Isso se aplica a todos os assemblies distribuídos, bem como ao próprio pacote NuGet, e permite que você verifique de forma independente se o que você está usando foi construído e publicado por nós.
Por que assinamos nossos releases
Ataques na cadeia de suprimentos de software — onde um atacante manipula um pacote entre o publisher e o usuário final — são uma ameaça crescente. Uma assinatura digital fornece uma garantia criptográfica de que o arquivo que você baixou é idêntico ao que construímos e liberamos. Também confirma a identidade do editor: a assinatura só pode ter sido criada pelo portador de um certificado emitido para a EPPlus Software AB por uma autoridade certificadora confiável. Se um arquivo foi modificado após a assinatura, ou se nunca foi assinado por nós, a verificação falhará.
O que está assinado
Todos os assemblies incluídos em uma release EPPlus são assinados em todos os frameworks-alvo suportados. O pacote NuGet é assinado separadamente como uma assinatura em nível de pacote, que cobre todo o conteúdo do pacote.
O conjunto exato de assemblies e frameworks alvo incluídos em uma determinada versão está listado na Lista de Materiais de Software para essa versão.
Certificado
O certificado de assinatura é emitido pela GlobalSign, uma autoridade certificadora de confiança global. O certificado é armazenado de forma segura em um armazenamento de chaves suportado por hardware e só é acessado como parte do nosso pipeline automatizado de liberação — a chave privada nunca sai do ambiente seguro.
| Emitido para | EPPlus Software AB |
|---|---|
| Emitido por | GlobalSign GCC R45 CodeSigning CA 2020 |
| Algoritmo de digestão | SHA-256 |
| Autoridade de carimbo de tempo | GlobalSign TSA for Advanced - G4 |
Todas as assinaturas incluem um carimbo de data confiável da GlobalSign. Isso garante que as assinaturas permaneçam verificáveis mesmo após a renovação do certificado de assinatura, desde que a assinatura tenha sido criada durante o período de validade do certificado. Note que os detalhes do certificado acima refletem o certificado de assinatura atual — o emissor e a autoridade de carimbo de data podem mudar na renovação.
Contraassinatura do repositório NuGet
Além da nossa própria assinatura de autor, NuGet.org adiciona automaticamente uma contraassinatura de repositório quando um pacote é publicado. Essa contraassinatura é emitida pela NuGet.org e confirma que o pacote foi enviado pelos proprietários registrados do pacote EPPlus em NuGet.org. Quando você verifica um pacote, verá ambas as assinaturas — a assinatura do autor da EPPlus Software AB e a contraassinatura do repositório da NuGet.org.
Você pode verificar os proprietários registrados do pacote EPPlus de forma independente no nuget.org/packages/EPPlus.
Se a verificação falhar
Uma verificação falhada significa ou que o arquivo foi modificado após sua assinatura, que a assinatura está ausente, ou que a cadeia de certificados não pode ser confiável. Não use um pacote ou conjunto que não passe na verificação. Se você tem motivos para acreditar que um comunicado publicado do EPPlus foi adulterado, por favor, denuncie imediatamente.
Consulte nossa Política de Divulgação de Vulnerabilidades para instruções sobre como entrar em contato conosco.
Verifique você mesmo uma autorização
Você pode verificar a assinatura de forma independente em qualquer release EPPlus usando ferramentas padrão, sem depender de nós.
Verificando o pacote NuGet
A maneira mais direta de verificar um lançamento do EPPlus é verificar a assinatura do pacote NuGet usando a CLI .NET. Isso funciona no Windows, Linux e macOS.
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
Um pacote verificado com sucesso mostrará tanto a assinatura do autor do EPPlus Software AB quanto a contraassinatura do repositório do 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>'.
Verificando um assembly
No Windows, assemblies individuais também podem ser verificados diretamente usando PowerShell. Isso valida tanto a assinatura criptográfica quanto a cadeia de confiança de certificados usando o armazenamento de confiança do Windows.
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
Uma assinatura válida mostrará Status: Válido e um certificado de signatário emitido para a EPPlus Software AB pela 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
A verificação em nível assembly usando PowerShell está disponível apenas no Windows. No Linux e macOS, recomendamos verificar o pacote NuGet usando dotnet nuget verify conforme descrito acima, que funciona em todas as plataformas.