Windows Server 2016/2019错误返回Owin.dll的Authenticode签名。

3
Owin.dll,Nuget.org上的Owin软件包中的程序集,没有Authenticode签名。但是,在Windows Server 2016和Windows Server 2019上,Get-AuthenticodeSignature(以及sigcheck.exe)错误地报告Owin.dll具有Authenticode签名。如果您部署了Windows Server虚拟机并运行此代码,则会返回不同的签名和时间戳证书(我只在Azure中执行了此操作)。

> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
> Invoke-WebRequest "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -OutFile NuGet.exe
> .\NuGet.exe install owin -o .
> Get-AuthenticodeSignature .\Owin.1.0\lib\net40\Owin.dll | Format-List

在Windows Server 2019上,它返回一个带有指纹AE9C1AE54763822EEC42474983D8B635116C8452和时间戳证书指纹893ED0E4D032C3855D5D2296B2DE2DD1AFB897DD的签名证书。
在Windows Server 2016上,它返回一个带有指纹E85459B23C232DB3CB94C7A56D47678F58E8E51E和时间戳证书指纹CFC3E3018EA65666DCE484FC7016EB42D1F108A9的签名证书。
其他证书元数据表明这些实际上是来自Microsoft的证书。
发生了什么?为什么这个特定的程序集在这些特定版本的Windows中表现出这种行为?
1个回答

2

虽然签名不是Owin.dll本身的一部分,但Windows Server有一个“安全目录”(位于%SystemRoot%\System32\CatRoot下),通过名称/哈希标识Owin.dll。安全目录由Microsoft签名,而返回Get-AuthenticodeSignature的是安全目录的签名证书。实际上,它只是一个“分离的”Authenticode签名,而不是嵌入在.dll中。


这是正确的。谢谢!Get-AuthenticodeSignature文档在提到以下内容时暗示了这一点: 如果文件既嵌入签名又Windows目录签名,则使用Windows目录签名。 - themilkyninja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接