Привет всем.
Столкнулся с проблемой, моя программа, написанная на Делфи, при запуске на компьютере с установленным KIS 2010 вызывает у него странную реакцию: антивирус кричит, что программа подозрительна, ибо у неё нету цифровой подписи. Хочу исправить, ибо человек нервничает. Так то программа вполне безобидная. Искал по сети, лишь в одной теме нашёл, что вроде бы в поставке Делфи есть утилита signtool для подписи, но там было довольно запутанно описано это всё.. Что посоветуете?..
Я там и был, ну не сказал бы, что всё так уж хорошо описано.. SignTool нашёл в системе, только там же ещё файл сертификата надо, я так понял? И ещё, по ссылке человек выкладывал процедуру
uses MSSIGN32;
procedure Sing( const AFile : THandleSignFileInfo;
const Alg : ALG_ID; const ASPC, APVK, AURL : WideString ); overload;
const
CONST_COUNT : DWORD = 0;
var
Url : PWideChar;
SignerCert : SIGNER_CERT;
FileInfo : SIGNER_FILE_INFO;
SubjectInfo : SIGNER_SUBJECT_INFO;
ProviderInfo : SIGNER_PROVIDER_INFO;
SignatureInfo : SIGNER_SIGNATURE_INFO;
begin
CryptoPrepare( FileInfo, SizeOf( SIGNER_FILE_INFO ));
FileInfo.pwszFileName := PWideChar( AFile.Name );
FileInfo.hFile := AFile.Handle;
CryptoPrepare( SubjectInfo, SizeOf( SIGNER_SUBJECT_INFO ));
SubjectInfo.pdwIndex := @CONST_COUNT;
SubjectInfo.dwSubjectChoice := SIGNER_SUBJECT_FILE;
SubjectInfo.pSignerFileInfo := PSIGNER_FILE_INFO( @FileInfo );
CryptoPrepare( SignerCert, SizeOf( SIGNER_CERT ));
SignerCert.dwCertChoice := SIGNER_CERT_SPC_FILE;
SignerCert.Attribute.pwszSpcFile := PWideChar( ASPC );
CryptoPrepare( SignatureInfo, SizeOf( SIGNER_SIGNATURE_INFO ));
SignatureInfo.algidHash := Alg;
CryptoPrepare( ProviderInfo, SizeOf( SIGNER_PROVIDER_INFO ));
ProviderInfo.dwProviderType := 1;
ProviderInfo.dwPvkChoice := PVK_TYPE_FILE_NAME;
ProviderInfo.pwszPvkFileName := PWideChar( APVK );
Url := nil;
if AURL <> '' then
Url := PWideChar( AURL );
CryptoCheck( SignerSign( SubjectInfo, SignerCert, SignatureInfo,
@ProviderInfo, Url, nil, nil ));
end;
Ага, вот в том и дело, что нету у меня сертификата)) Кажется, я в той теме видел упоминание, что в папке делфи есть сертификат, и им можно подписать, мол, программа создана с помощью делфи..
Короче залез я в MSDN, нашёл как пользоваться SignTool, но сначала надо создать сертификат, якобы прогой MakeCert. Создаю - по примеру - никаких .cer-файлов в текущей папке не появляется.
Проблема решилась, я просто сначала какой-то левый Makecert скачал..
Блин! Не одно, так.. Подписывать-то получается, но в Свойста->Цифровые подписи написано, что мой сертификат какой-то там в корне непроверенный, и система на него подозрительно смотрит. Подписывал так:
makecert cert.cer
signtool signwizard
Неужели без покупки сертификата нормально подписать (чтобы антивирус не ругался) не получится?
Извиняюсь за кросспостинг.
Здесь был:
http://wiki.services.openoffice.org/wiki/%D0%9E%D0%9E%D0%BE_%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D1%81%D1%82%D0%B8:_%D0%9A%D0%B0%D0%BA_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C_%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D1%83%D1%8E_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C_%D0%B2_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B5_%D0%9E%D0%9E%D0%BE#.D0.9A.D0.B0.D0.BA_.D0.BE.D1.82.D0.BD.D0.BE.D1.81.D0.B8.D1.82.D1.8C.D1.81.D1.8F_.D0.BA_.D1.81.D0.B5.D1.80.D1.82.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.82.D1.83 ?
Особое внимание обратить на 2 вещи:
Во - первых, меня порадовало объяснение:
Короче, ну их нафиг, этих касперских. Любая программа, написанная не майкрософтом или ещё какой-то фирмой, сразу попадает в область рискованных и потенциально опасных. Перебдели, однако.. Мне на форуме ихнем примерно то же сказали.
И это при том, что у меня есть .exe, который это каким-то образом обходит_)
На CACert был, зарегистрировался, но проблема в том, что пользователю нужно их сертификат устанавливать, а это лишние телодвижения. Будем пробовать нетрадиционные методы)