Firma del Codice

Ogni release di EPPlus è firmata digitalmente con un certificato di firma di codice rilasciato da GlobalSign a EPPlus Software AB. Questo vale per tutti gli assembly distribuiti così come per il pacchetto NuGet stesso, e ti permette di verificare in modo indipendente che ciò che stai usando sia stato costruito e pubblicato da noi.

Perché firmiamo i nostri annunci

Gli attacchi alla supply chain software — in cui un attaccante manomette un pacchetto tra l'editore e l'utente finale — rappresentano una minaccia crescente. Una firma digitale fornisce una garanzia crittografica che il file che hai scaricato sia identico a quello che abbiamo costruito e rilasciato. Conferma inoltre l'identità dell'editore: la firma può essere stata creata solo dal titolare di un certificato rilasciato a EPPlus Software AB da un'autorità certificatrice affidabile. Se un file è stato modificato dopo la firma, o se non è mai stato firmato da noi, la verifica fallirà.

Cosa è firmato

Tutti gli assembly inclusi in un release EPPlus sono firmati su ogni framework target supportato. Il pacchetto NuGet è firmato separatamente come firma a livello di pacchetto, che copre l'intero contenuto del pacchetto.

L'insieme esatto di assembly e framework target inclusi in una data release è elencato nella Carta dei Materiali Software per quella release.

Certificato

Il certificato di firma viene rilasciato da GlobalSign, un'autorità certificatrice di fiducia globale. Il certificato è memorizzato in modo sicuro in uno storage di chiavi supportato dall'hardware ed è accessibile solo come parte della nostra pipeline di rilascio automatico — la chiave privata non lascia mai l'ambiente sicuro.

Assegnato a EPPlus Software AB
Rilasciato da GlobalSign GCC R45 CodeSigning CA 2020
Algoritmo digest SHA-256
Autorità di timestamp GlobalSign TSA for Advanced - G4

Tutte le firme includono un timestamp affidabile di GlobalSign. Questo garantisce che le firme rimangano verificabili anche dopo il rinnovo del certificato di firma, purché la firma sia stata creata durante il periodo di validità del certificato. Si noti che i dettagli del certificato sopra riportati riflettono l'attuale certificato di firma — l'emittente e l'autorità di timestamp possono cambiare al rinnovo.

Controfirma del repository NuGet

Oltre alla nostra firma autore, NuGet.org aggiunge automaticamente una controfirma di repository quando un pacchetto viene pubblicato. Questa controfirma è emessa da NuGet.org e conferma che il pacco è stato caricato dai proprietari registrati del pacchetto EPPlus su NuGet.org. Quando verifichi un pacchetto, vedrai entrambe le firme — la firma dell'autore di EPPlus Software AB e la controfirma del repository di NuGet.org.

Puoi verificare indipendentemente i proprietari registrati del pacchetto EPPlus su nuget.org/packages/EPPlus.

Se la verifica fallisce

Una verifica fallita significa o che il file è stato modificato dopo la sua firma, che la firma manca, oppure che la catena di certificati non può essere affidabile. Non usare un package o un assembly che fallisce la verifica. Se avete motivo di credere che una release pubblicata di EPPlus sia stata manipolata, vi preghiamo di segnalarcelo immediatamente.

Consulta la nostra Politica di Divulgazione delle Vulnerabilità per le istruzioni su come contattarci.

Verifica tu stesso un rilascio

Puoi verificare in modo indipendente la firma su qualsiasi release EPPlus usando strumenti standard, senza dover fare affidamento su di noi.

Verifica del pacchetto NuGet

Il modo più semplice per verificare una release EPPlus è verificare la firma del pacchetto NuGet usando la CLI .NET. Questo funziona su Windows, Linux e macOS.

dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed

Un pacchetto verificato con successo mostrerà sia la firma dell'autore da EPPlus Software AB sia la controfirma del repository da 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>'.

Verifica di un assemblaggio

Su Windows, i singoli assembly possono essere verificati direttamente tramite PowerShell. Questo valida sia la firma crittografica sia la catena di fiducia dei certificati utilizzando lo store fiduciario di Windows.

Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *

Una firma valida mostrerà Stato: Valido e un certificato firmatario rilasciato a EPPlus Software AB da 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 verifica a livello di assembly tramite PowerShell è disponibile solo su Windows. Su Linux e macOS, consigliamo di verificare il pacchetto NuGet usando dotnet nuget verify come descritto sopra, che funziona su tutte le piattaforme.