Firma de códigos
Cada versión de EPPlus está firmada digitalmente con un certificado de firma de código emitido por GlobalSign a EPPlus Software AB. Esto se aplica a todos los ensambladores distribuidos así como al propio paquete NuGet, y te permite verificar de forma independiente que lo que usas fue creado y publicado por nosotros.
Por qué firmamos nuestros discos
Los ataques a la cadena de suministro de software — donde un atacante manipula un paquete entre el editor y el usuario final — son una amenaza creciente. Una firma digital proporciona una garantía criptográfica de que el archivo que has descargado es idéntico a lo que construimos y publicamos. También confirma la identidad del editor: la firma solo puede haber sido creada por el titular de un certificado emitido a EPPlus Software AB por una autoridad certificadora de confianza. Si un archivo ha sido modificado tras la firma, o si nunca lo firmamos nosotros, la verificación fallará.
Lo que está firmado
Todos los ensamblajes incluidos en una versión de EPPlus están firmados en todos los marcos objetivo soportados. El paquete NuGet se firma por separado como una firma a nivel de paquete, que cubre todo el contenido del paquete.
El conjunto exacto de ensamblajes y frameworks objetivo incluidos en una versión determinada se indica en la Ley de Materiales de Software para esa versión.
Certificado
El certificado de firma es emitido por GlobalSign, una autoridad certificadora de confianza global. El certificado se almacena de forma segura en un almacén de claves respaldado por hardware y solo se accede como parte de nuestra cadena de liberación automatizada: la clave privada nunca sale del entorno seguro.
| Emitido a | EPPlus Software AB |
|---|---|
| Emitido por | GlobalSign GCC R45 CodeSigning CA 2020 |
| Algoritmo de digestión | SHA-256 |
| Autoridad de marca temporal | GlobalSign TSA for Advanced - G4 |
Todas las firmas incluyen una marca de tiempo confiable de GlobalSign. Esto garantiza que las firmas sigan siendo verificables incluso después de que se renove el certificado de firma, siempre que la firma se haya creado durante el periodo de validez del mismo. Tenga en cuenta que los detalles del certificado anteriores reflejan el certificado de firma actual: el emisor y la autoridad de marca temporal pueden cambiar en la renovación.
Contrafirma de repositorio NuGet
Además de nuestra propia firma de autor, NuGet.org añade automáticamente una contrafirma de repositorio cuando se publica un paquete. Esta contrafirma es emitida por NuGet.org y confirma que el paquete fue subido por los propietarios registrados del paquete EPPlus en NuGet.org. Cuando verifiques un paquete, verás ambas firmas: la firma del autor de EPPlus Software AB y la contrafirma del repositorio de NuGet.org.
Puedes verificar los propietarios registrados del paquete EPPlus de forma independiente en nuget.org/packages/EPPlus.
Si la verificación falla
Una verificación fallida significa o bien que el archivo ha sido modificado después de ser firmado, que falta la firma o que no se puede confiar en la cadena de certificados. No uses un encapsulado o ensamblador que no pase la verificación. Si tiene motivos para creer que una publicación publicada de EPPlus ha sido manipulada, por favor comunícanos inmediatamente.
Consulta nuestra Política de Divulgación de Vulnerabilidades para obtener instrucciones sobre cómo contactarnos.
Verifica tú mismo una autorización
Puedes verificar la firma de forma independiente en cualquier versión de EPPlus usando herramientas estándar, sin depender de nosotros.
Verificación del paquete NuGet
La forma más sencilla de verificar una versión de EPPlus es verificar la firma del paquete NuGet usando la CLI .NET. Esto funciona en Windows, Linux y macOS.
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
Un paquete verificado correctamente mostrará tanto la firma del autor de EPPlus Software AB como la contrafirma del repositorio de 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>'.
Verificación de un ensamblador
En Windows, los ensamblajes individuales también pueden verificarse directamente usando PowerShell. Esto valida tanto la firma criptográfica como la cadena de confianza de certificados usando el almacén de confianza de Windows.
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
Una firma válida mostrará Estado: Válido y un certificado de firmante emitido a EPPlus Software AB por 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
La verificación a nivel de ensamblador usando PowerShell solo está disponible en Windows. En Linux y macOS, recomendamos verificar el paquete NuGet usando dotnet nuget verify como se ha descrito antes, que funciona en todas las plataformas.