SHA256和SHA1双签名

发布时间:2022/11/14 14:34:20 打印 字号:

dual-sign-your-software-file-using-sha256.jpg

很多时候,软件开发人员会构建在多个操作系统上运行的软件。例如,为Windows10和8构建的软件甚至可以在WindowsVista等早期版本上运行。

但是,出现了一个问题:较新版本的操作系统支持SHA–256,而WindowsVista等早期版本只能支持SHA–1哈希算法。而且,由于这个问题,软件在较旧的Windows操作系统上会出现故障。

因此,如果您处于这种情况并希望您的软件在新旧版本的Windows操作系统上运行,最好使用SHA–256和SHA–1代码签名证书对您的软件文件进行双重签名。同样,您首先需要使用SHA–256代码签名证书对您的软件/应用程序进行签名。然后,一旦你签署了它,你需要使用SHA-1代码签名证书附加第二个签名。

简而言之,对您的软件/应用程序文件进行双重签名的主要原因是在早期操作系统(如WindowsVista)上使用与SHA–256签名不兼容的单个文件来支持它。


使用SHA–256和SHA–1代码签名证书对您的软件/应用程序进行双重签名

但是,要对您的软件/应用程序文件进行双重签名并在早期的操作系统(如WindowsVista)上插入SHA–1文件,请使用以下命令:

signtool.exe sign /f SignMyCode.pfx /p /t http://timestamp.certificate-authority-name.com /v MyCodeSign.exe signtool.exe sign /f SignMyCode.pfx /p /fd sha256 /tr http://timestamp.certificate-authority-name.com/?td=sha256 /td sha256 /as /v MyCodeSign.exe

这里,

  • MyCodeSign是一个示例软件/应用程序文件。只需将其替换为您要签名的软件文件即可。

  • SignMyCode.pfx文件是一个证书文件。

  • Signtool.exe是一个命令行工具,可以对您的应用程序/软件文件进行数字签名并验证签名和时间戳。

全SHA命令–1兼容性

同样,为了完全兼容SHA1,您需要使用两个证书。而且,下面是相同的命令:

signtool.exe sign /f SignMyCodeSHA1Crt.pfx /p /t http://timestamp.certificate-authority-name.com /v MyCodeSign.exe signtool.exe sign /f SignMyCodeSHA256Crt.pfx /p /fd sha256 /tr https://timestamp.certificate-authority-name.com/?td=sha256 /td sha256 /as /v MyCodeSign.exe

这里,

  • 使用您购买代码签名证书的证书颁发机构的时间戳URL更改https://timestamp.certificate-authority-name.com。

  • 如果您输入密码来解密P12/PFX文件,则需要通过signtool.exe添加额外的参数。

  • 要对您的软件/应用程序文件进行双重签名,您需要使用最新的可用Signtool或其他版本,即6.3或更高版本。

此外,假设您希望支持其他旧版本的Windows操作系统,例如WindowsXPSP2或其他更早版本。在这种情况下,您还需要对DLL、EXE和所有其他相关文件进行双重签名,并且还需要基于SHA-1的代码签名证书。

signtool.exe sign /f SignMyCodeCrt.pfx /t /v MyCodeSign.exe
signtool.exe sign /f SignMyCodeCrt.pfx /fd sha256 /tr /td sha256 /as /v MyCodeSign.exe

注意:如上所述,您可能需要在命令行工具signtool.exe中添加额外的参数。例如,如果要为PFX/P12文件解密添加密码,则必须添加一个额外的参数。

最后,一旦签名过程完成,建议您验证一次。因此,您可以确保它是否会产生任何问题。

并且,要验证通过以下步骤:

  • 选择并右键单击双重签名的软件/应用程序。并转到属性。

  • 属性窗口打开后,转到“数字签名”选项卡。如果它是双重签名的,你应该看到签名证书SHA-1和SHA–256以及每个的时间戳,如果你已经给它加了时间戳的话。

双重签名算法

如果一切正常,那么您将看到如上图所示的内容。


包起来

如今,人们已经使用最新的可用操作系统升级了他们的系统。但是,有些人由于某种原因使用旧操作系统。

而且,作为软件开发人员,如果您正在为某人构建软件或希望您的软件被所有最新和早期版本的操作系统(如WindowsVista或Windows10)所接受。那么在这种情况下,双重签名是必须的,因为早期的操作系统与SHA–2签名不兼容。

最后,如果您已经阅读到这里,我们希望本文能帮助您对您的软件/应用程序文件进行双重签名,以便它可以在最新和较旧的Windows操作系统版本上顺利运行。


常问问题

什么是代码签名中的双重签名?

要使用两个代码签名证书对您的软件或应用程序文件进行签名,您需要使用该命令进行两次代码签名。虽然,在双重签名中,命令略有改变。同样,上面提到了使用哪个命令。


什么是SignTool?

SignTool是一种用于在特定命令的帮助下对软件/应用程序文件进行数字签名、验证数字签名和时间戳的工具。同样,它安装在MicrosoftWindows软件开发工具包(SDK)的\Bin文件夹中。

例如,C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe。


什么是SHA2?

SHA2(安全散列算法–2)是一种散列算法,是SHA–1散列算法的高级版本,具有更好的安全性。换句话说,SHA-2是SHA-1算法的替代和改进,与它的前身SHA-1相比,该算法以更好的安全性着称。


什么是SHA1?

SHA1是一种加密散列算法,以获取输入并产生称为消息摘要的160位(20字节)散列值而闻名。然而,从2005年开始,它被认为不太安全,并在2011年正式被弃用。