Signature de codes
Chaque version EPPlus est signée numériquement avec un certificat de signature de code délivré par GlobalSign à EPPlus Software AB. Cela s’applique à tous les assemblages distribués ainsi qu’au package NuGet lui-même, et vous permet de vérifier de manière indépendante que ce que vous utilisez a été construit et publié par nous.
Pourquoi nous signons nos dépôts
Les attaques sur la chaîne d’approvisionnement logicielle — où un attaquant manipule un package entre l’éditeur et l’utilisateur final — représentent une menace croissante. Une signature numérique fournit une garantie cryptographique que le fichier que vous avez téléchargé est identique à ce que nous avons construit et publié. Elle confirme également l’identité de l’éditeur : la signature ne peut avoir été créée que par le titulaire d’un certificat délivré à EPPlus Software AB par une autorité de certification de confiance. Si un fichier a été modifié après la signature, ou s’il n’a jamais été signé par nous, la vérification échouera.
Qu’est-ce qui est signé
Tous les assemblages inclus dans une version EPPlus sont signés sur tous les cadres de cibles pris en charge. Le paquet NuGet est signé séparément en tant que signature au niveau du paquet, qui couvre l’ensemble du contenu du paquet.
L’ensemble exact d’assemblages et de cadres cibles inclus dans une version donnée est listé dans la Liste des Matériaux Logiciels pour cette version.
Certificat
Le certificat de signature est délivré par GlobalSign, une autorité de certification mondialement fiable. Le certificat est stocké de manière sécurisée dans un magasin de clés supporté par le matériel et n’est accessible que dans le cadre de notre pipeline de libération automatisée — la clé privée ne quitte jamais l’environnement sécurisé.
| Attribué à | EPPlus Software AB |
|---|---|
| Publié par | GlobalSign GCC R45 CodeSigning CA 2020 |
| Algorithme digestif | SHA-256 |
| Autorité horodatage | GlobalSign TSA for Advanced - G4 |
Toutes les signatures incluent un horodatage fiable de GlobalSign. Cela garantit que les signatures restent vérifiables même après le renouvellement du certificat de signature, tant que la signature a été créée pendant la période de validité du certificat. Notez que les détails du certificat ci-dessus reflètent le certificat de signature actuel — l’émetteur et l’autorité d’horodatage peuvent changer lors du renouvellement.
Contre-signature du dépôt NuGet
En plus de notre propre signature d’auteur, NuGet.org ajoute automatiquement une contre-signature de dépôt lorsqu’un paquet est publié. Cette contre-signature est émise par NuGet.org et confirme que le colis a été téléchargé par les propriétaires enregistrés du colis EPPlus sur NuGet.org. Lorsque vous vérifiez un paquet, vous verrez les deux signatures — la signature d’auteur d’EPPlus Software AB et la contre-signature du dépôt de NuGet.org.
Vous pouvez vérifier les propriétaires enregistrés du package EPPlus de manière indépendante sur nuget.org/packages/EPPlus.
Si la vérification échoue
Une vérification échouée signifie soit que le fichier a été modifié après sa signature, soit que la signature manque, soit que la chaîne de certificats ne peut pas être fiable. N’utilisez pas un package ou un assembleur qui échoue à la vérification. Si vous avez des raisons de croire qu’une publication d’EPPlus a été modifiée, veuillez nous la signaler immédiatement.
Consultez notre politique de divulgation de vulnérabilité pour les instructions sur la manière de nous contacter.
Vérifiez vous-même une autorisation
Vous pouvez vérifier independamment la signature sur n’importe quelle version EPPlus en utilisant des outils standards, sans dépendre de nous.
Vérification du package NuGet
La manière la plus simple de vérifier une version EPPlus est de vérifier la signature du paquet NuGet à l’aide de la ligne de commande .NET. Cela fonctionne sur Windows, Linux et macOS.
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
Un paquet vérifié avec succès affichera à la fois la signature de l’auteur d’EPPlus Software AB et la contre-signature du dépôt 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>'.
Vérification d’un assemblage
Sous Windows, les assemblages individuels peuvent également être vérifiés directement via PowerShell. Cela valide à la fois la signature cryptographique et la chaîne de confiance des certificats via le magasin de confiance Windows.
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
Une signature valide indiquera le statut : Valide et un certificat de signature délivré à EPPlus Software AB par 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 vérification au niveau assembleur via PowerShell n’est disponible que sur Windows. Sur Linux et macOS, nous recommandons de vérifier le paquet NuGet via dotnet nuget verify comme décrit ci-dessus, qui fonctionne sur toutes les plateformes.