Code-Signierung
Jede EPPlus-Version ist digital mit einem Code-Signing-Zertifikat signiert, das von GlobalSign an EPPlus Software AB ausgestellt wird. Dies gilt sowohl für alle verteilten Assemblies als auch für das NuGet-Paket selbst und ermöglicht es Ihnen, unabhängig zu überprüfen, ob das, was Sie verwenden, von uns erstellt und veröffentlicht wurde.
Warum wir unsere Erklärungen unterschreiben
Software-Lieferketten-Angriffe – bei denen ein Angreifer ein Paket zwischen Publisher und Endnutzer manipuliert – stellen eine wachsende Bedrohung dar. Eine digitale Signatur garantiert kryptografisch, dass die heruntergeladene Datei identisch mit der ist, die wir erstellt und veröffentlicht haben. Es bestätigt auch die Identität des Verlags: Die Signatur kann nur vom Inhaber eines Zertifikats erstellt worden sein, das EPPlus Software AB von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde. Wenn eine Datei nach der Unterzeichnung geändert wurde oder nie von uns unterschrieben wurde, schlägt die Verifizierung fehl.
Was ist unterschrieben
Alle in einer EPPlus-Version enthaltenen Assemblies sind über jedes unterstützte Zielframework signiert. Das NuGet-Paket wird separat als Paket-Signatur signiert, die den gesamten Paketinhalt abdeckt.
Die genaue Menge an Assemblies und Ziel-Frameworks, die in einer bestimmten Version enthalten sind, ist im Software Bill of Materials für diese Version aufgeführt.
Zertifikat
Das Unterzeichnungszertifikat wird von GlobalSign ausgestellt, einer weltweit vertrauenswürdigen Zertifizierungsstelle. Das Zertifikat wird sicher in einem hardwaregestützten Schlüsselspeicher gespeichert und nur als Teil unserer automatisierten Release-Pipeline abgerufen – der private Schlüssel verlässt die sichere Umgebung nie.
| Herausgegeben an | EPPlus Software AB |
|---|---|
| Herausgegeben von | GlobalSign GCC R45 CodeSigning CA 2020 |
| Digest-Algorithmus | SHA-256 |
| Zeitstempelautorität | GlobalSign TSA for Advanced - G4 |
Alle Unterschriften enthalten einen vertrauenswürdigen Zeitstempel von GlobalSign. Dies stellt sicher, dass Unterschriften auch nach der Erneuerung des Unterzeichnungszertifikats verifizierbar bleiben, solange die Unterschrift während der Gültigkeitsdauer erstellt wurde. Beachten Sie, dass die oben genannten Zertifikatsdetails das aktuelle Unterzeichnungszertifikat widerspiegeln – Aussteller und Zeitstempelautorität können sich bei der Verlängerung ändern.
NuGet-Repository-Gegensignatur
Zusätzlich zu unserer eigenen Autorensignatur fügt NuGet.org bei der Veröffentlichung eines Pakets automatisch eine Repository-Gegensignatur hinzu. Diese Gegenunterschrift wird von NuGet.org ausgestellt und bestätigt, dass das Paket von den registrierten Eigentümern des EPPlus-Pakets auf NuGet.org hochgeladen wurde. Wenn Sie ein Paket verifizieren, sehen Sie beide Signaturen – die Autorensignatur von EPPlus Software AB und die Repository-Gegensignatur von NuGet.org.
Sie können die registrierten Eigentümer des EPPlus-Pakets unabhängig auf nuget.org/packages/EPPlus überprüfen.
Wenn die Verifizierung fehlschlägt
Eine fehlgeschlagene Verifizierung bedeutet entweder, dass die Datei nach der Unterzeichnung geändert wurde, die Signatur fehlt oder dass die Zertifikatskette nicht vertrauenswürdig ist. Verwenden Sie kein Paket oder eine Assembly, die die Verifikation nicht besteht. Wenn Sie Grund zu der Annahme haben, dass eine veröffentlichte EPPlus-Veröffentlichung manipuliert wurde, melden Sie dies uns bitte umgehend.
Siehe unsere Richtlinie zur Offenlegung von Schwachstellen für Anleitungen, wie Sie uns kontaktieren können.
Verifizieren Sie eine Freigabe selbst
Sie können die Unterschrift auf jeder EPPlus-Veröffentlichung unabhängig mit Standardwerkzeugen verifizieren, ohne sich auf uns verlassen zu müssen.
Überprüfung des NuGet-Pakets
Die einfachste Methode, eine EPPlus-Version zu verifizieren, ist die Überprüfung der NuGet-Paketsignatur mit der .NET-CLI. Das funktioniert unter Windows, Linux und macOS.
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
Ein erfolgreich verifiziertes Paket zeigt sowohl die Autorensignatur von EPPlus Software AB als auch die Repository-Gegensignatur von 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>'.
Verifizierung einer Assembly
Unter Windows können einzelne Assemblies auch direkt mit PowerShell überprüft werden. Dies validiert sowohl die kryptografische Signatur als auch die Zertifikats-Vertrauenskette im Windows-Vertrauensspeicher.
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
Eine gültige Unterschrift zeigt Status: Gültig und ein Unterzeichnerzertifikat, das von GlobalSign an EPPlus Software AB ausgestellt wurde:
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
Assembly-Verifikation mit PowerShell ist nur unter Windows verfügbar. Unter Linux und macOS empfehlen wir, das NuGet-Paket mit dotnet nuget verify wie oben beschrieben zu verifizieren, das auf allen Plattformen funktioniert.