是否可以对VB6应用程序进行数字签名?

时间:2018-06-01 07:24:56

标签: vb6 digital-signature

我在2001年为一家公司写了一个VB6应用程序,它显然仍在使用。该公司要求我对其进行数字签名,以便他们可以避免“Windows保护您的PC”对话框:

enter image description here

甚至可以对VB6应用程序进行数字签名吗?如果是这样,有人可以指点我的教程或类似的东西。

3 个答案:

答案 0 :(得分:3)

首先关闭的一般答案是“是” - VB6创建的EXE和DLL文件可以进行数字签名。

我的理解是签名过程最终会在签名的二进制文件中添加一些“元数据”,以后可以检查。这似乎是一个通用的Windows功能,并不是特定于VB6或任何其他特定的编译器(据我所知)。

我用来签名的具体方法是Visual Build Pro中的构建步骤。这使用PFX证书文件对二进制文件进行签名,并对其进行时间戳记。 (有other configuration options as well)。

请注意,我使用此工具是因为它也是我们用于VB6构建自动化的工具(并且效果很好!)但我相信可以使用其他签名工具。

答案 1 :(得分:1)

我认为这会对你有所帮助:

  

https://msdn.microsoft.com/en-us/library/ms995332.aspx

     

摘要: CAPICOM 是Microsoft的一项新安全技术   允许Microsoft Visual Basic ,Visual Basic脚本,ASP和C ++   程序员轻松将数字签名和加密纳入其中   他们的申请。 (5页打印)

答案 2 :(得分:1)

我们使用Platform SDK中的signtool.exe,直到它停止生成sha-1签名(为了兼容XP),因此必须迁移到osslsigncode开源实现(与丑陋的cygwin依赖关系)。 / p>

这是我们codesign.bat用来与sha-1和更新的sha-256签名同时签署可执行文件的@echo off setlocal set CYGWIN=nodosfilewarning set tmpfile=%TEMP%\~$intermediate.tmp :: set code-signing certficate .pfx file and password here set osslsigncode="%~dp0osslsigncode.exe" sign -pkcs12 "%~dp0ucs_code_sign_current.pfx" -pass ######### set signtool="%~dp0signtool.exe" sign /f "%~dp0ucs_code_sign_current.pfx" /p ######## :: set default description and URL here (both options skipped if left empty) set desc= set durl= :parse_params if [%~1]==[] goto :parse_complete if [%~1]==[/d] set desc="%~2"& shift /1 & shift /1 & goto :parse_params if [%~1]==[/du] set durl="%~2"& shift /1 & shift /1 & goto :parse_params set infile=%~1 set intype=%~x1 shift /1 & goto :parse_params :parse_complete if [%infile%]==[] goto :usage if not [%desc%]==[] ( set osslsigncode=%osslsigncode% -n %desc% set signtool=%signtool% /d %desc% ) if not [%durl%]==[] ( set osslsigncode=%osslsigncode% -i %durl% set signtool=%signtool% /du %durl% ) if [%intype%]==[.msi] goto :msi_sign %osslsigncode% -h sha1 -t http://timestamp.comodoca.com -in "%infile%" -out "%tmpfile%" > nul if errorlevel 1 %osslsigncode% -h sha1 -t http://timestamp.globalsign.com/scripts/timestamp.dll -in "%infile%" -out "%tmpfile%" > nul if errorlevel 1 exit /b 1 %osslsigncode% -nest -h sha2 -ts http://timestamp.comodoca.com -in "%tmpfile%" -out "%infile%" > nul if errorlevel 1 %osslsigncode% -nest -h sha2 -ts http://timestamp.globalsign.com/?signature=sha2 -in "%tmpfile%" -out "%infile%" > nul if errorlevel 1 exit /b 1 goto :cleanup :msi_sign ::%signtool% /t "http://timestamp.comodoca.com" "%infile%" ::if errorlevel 1 %signtool% /t "http://timestamp.globalsign.com/scripts/timestamp.dll" "%infile%" %osslsigncode% -h sha1 -t http://timestamp.comodoca.com -add-msi-dse -in "%infile%" -out "%tmpfile%" > nul if errorlevel 1 %osslsigncode% -h sha1 -t http://timestamp.globalsign.com/scripts/timestamp.dll -add-msi-dse -in "%infile%" -out "%tmpfile%" > nul if errorlevel 1 exit /b 1 copy "%tmpfile%" "%infile%" /y > nul :cleanup del "%tmpfile%" /q goto :eof :usage echo usage: %~nx0 [options] ^<infile^> echo. echo where options: echo /d ^<desc^> Optional file description echo /du ^<url^> Optional company URL echo. goto :eof 。也可以签署.msi可再发行组件。

 <target name="FrontServiceFile"
            xsi:type="File"
            fileName="${basedir}\App_Data\LogFiles\front-${shortdate}.log"
            archiveEvery="Day"         
            maxArchiveFiles="14"
            deleteOldFileOnStartup="true"
 />

您需要PFX格式的商业代码签名证书。您可以根据需要调整此批次,或者只是将其用作您的impl的灵感。