我可以对 JScript (.js) 或 VBScript (.vbs) 文件进行数字签名吗?

Can I digitally sign JScript (.js) or VBScript (.vbs) files?

我知道可以使用 signtool 签署 Windows binary 可执行文件。所以一直以来我都假设不能签署任何由 Windows Script Host 解释的文件,例如 JScript (.js) 或 VBScript (.vbs),因为它们只是文本文件。

但是今天,当我打开从我的网站下载的 .js 文件时,我看到了这个警告:

这是否意味着有一种方法可以签署那些 .js/.vbs 文件?如果是,那又如何?

Scripting.Signer Object可以使用数字签名签署脚本。

Dim filespec : Set filespec = "my_script.vbs"
Dim cert : Set cert = "my" ' the default private certificate
Dim oSign : Set oSign = CreateObject("Scripting.Signer")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim file : Set file = fso.GetFile(filespec)

oSign.SignFile file.Path, cert

只是为了完成我原来的问题。答案是。据我所知,可以使用 Microsoft 的 SignTool:

对以下文件进行签名
  • 显然 Windows 可执行文件:.exe.dll.com(对于旧 DOS 格式)、.scr(对于屏幕保护程序), .ocx(对于 ActiveX 控件),.cpl(对于控制面板可执行文件。)

  • Windows 安装程序文件:.msi.msp

  • 基于文本的脚本:.js(对于 JScript),.vbs(对于 VBScript),.jse(对于编码的 JScript),.vbe(对于编码的 VBScript)

  • PowerShell 脚本:.ps1.psm1.ps1xml

  • Windows Script Files: .wsf(混合内容)