代码签名
每个EPPlus版本都经过数字签名,由GlobalSign向EPPlus Software AB签发代码签名证书。这适用于所有分布式汇编以及NuGet包本身,并允许您独立验证所使用的软件是否由我们构建和发布。
我们签署免责书的原因
软件供应链攻击——攻击者篡改发布者与终端用户之间的包——正成为日益增长的威胁。数字签名提供了加密保证,确保您下载的文件与我们构建和发布的文件完全相同。它也确认了发布者的身份:该签名只能由持有由可信证书颁发给 EPPlus Software AB 的证书的持有人创建。如果文件在签署后被修改,或者从未由我们签署,验证将失败。
证书
签名证书由全球受信任的证书机构GlobalSign颁发。证书安全存储在硬件支持的密钥存储中,仅作为我们自动化发布流程的一部分被访问——私钥永远不会离开安全环境。
| 隶属 | EPPlus Software AB |
|---|---|
| 发行人 | GlobalSign GCC R45 CodeSigning CA 2020 |
| 摘要算法 | SHA-256 |
| 时间戳权限 | GlobalSign TSA for Advanced - G4 |
所有签名都包含来自GlobalSign的可信时间戳。这确保即使签约证书续期后,只要签名是在证书有效期内创建的,签名依然可验证。请注意,上述证书详情反映当前的签约证书——发行方和时间戳授权机构在续期时可能会发生变化。
NuGet 仓库副签名
除了我们自己的作者签名外,NuGet.org 在软件包发布时会自动添加仓库反签名。该复签由 NuGet.org 发布,确认该包是由 EPPlus 包注册所有者于 NuGet.org 上传的。当你验证一个包时,你会看到两个签名——EPPlus Software AB 的作者签名和 NuGet.org 的仓库签名。
你可以在 nuget.org/packages/EPPlus 上独立验证EPPlus软件包的注册所有者。
如果验证失败
验证失败意味着文件在签署后被修改、签名缺失,或证书链不可信。不要使用验证失败的包或装配。如果您有理由相信已发布的EPPlus发布被篡改,请立即向我们举报。
请参阅我们的 漏洞披露政策 ,了解如何联系我们。
自己核实授权
您可以使用标准工具独立验证任何EPPlus版本的签名,无需依赖我们。
验证NuGet包
验证 EPPlus 版本的最直接方法是使用 .NET CLI 验证 NuGet 包签名。这适用于 Windows、Linux 和 macOS。
dotnet nuget verify EPPlus.<version>.nupkg --verbosity detailed
成功验证的包将同时显示 EPPlus Software AB 的作者签名和 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>'.
验证装配
在 Windows 上,单个汇编也可以直接使用 PowerShell 验证。这通过 Windows 信任存储验证加密签名和证书信任链。
Get-AuthenticodeSignature "path\to\EPPlus.dll" | Format-List *
有效的签名将显示状态:有效,以及由GlobalSign颁发给EPPlus Software AB的签署者证书:
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
使用 PowerShell 进行汇编级验证仅支持 Windows 版本。在 Linux 和 macOS 上,我们建议使用上述的 dotnet nuget verify 验证 NuGet 包,该工具适用于所有平台。