我在2001年为一家公司写了一个VB6应用程序,它显然仍在使用。该公司要求我对其进行数字签名,以便他们可以避免“Windows保护您的PC”对话框:
甚至可以对VB6应用程序进行数字签名吗?如果是这样,有人可以指点我的教程或类似的东西。
答案 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的灵感。