Страница 1 из 4

Про цифровую подпись программы

Добавлено: 06 Июль 2011, 8:08
Игорь Столяров
Привет всем !

В последнее время озверели антивирусы - постоянно "предупреждают", что запускаемая программа не имеет цифровой подписи и потому может быть опасна и т.д.
Обычного юзера это вводит в ступор, он начинает паниковать от того, что ему надо принимать решение о том доверять программе или нет ... А вдруг там чего ... и т.д.

Соответсвенно вопрос ... Как добавить эту самую цифровую подпись в приложение собранное на Clarion ?
Что-то подобное кажется было пару лет назад в рассылках ClarionMag, но найти (или вспомнить где искать) - не получается ...

Никто с этой "проблемой" не сталкивался ? Заранее спасибо за информацию.

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 9:15
Губин Игорь
Сатья в Clarion Magazine была в начале начале эры Vista (искать лень. Я там до сих пор одну статью второй раз не найду ;) ). На самом деле лечится

а. отключением UAC
б. внесением сетевого диска в доверенные

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 9:47
Игорь Столяров
То, что это лечится перенастройкой Windows, отключением контроля, добавлением программы в список доверенных антивируса и т.д. - это и ежу понятно. :)

Когда у тебя софт работает на подконтрольных компьютерах - вопросов не возникает.
Но если программа работает на сотнях "чужих" компьютеров, то достает отвечать на одни и те же вопросы в стиле "почему антивирус считает Вашу программу опасной, может быть она чем то уже заражена ? и т.д." Ибо любое сообщение от антивируса воспринимается как сигнал о потенциальной опасности, что в общем-то верно, но в данном случае излишне.

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 9:50
AlesDales
Цитата № 1:
" Есть много фирм, которые за деньги удостоверяют сертификат издателя (аналог паспорта) (например Verisign), и тогда программа, подписанная эти сертификатом, будет иметь подпись свидетельствующую о происхождении программы от конкретного издателя. Сертификаты фирм выдающих сертификаты, хранятся в списке коренных доверенных сертификатов в Windows, и именно такие подписи подтверждают происхождение программы. "

Не проверял, но
Цитата № 2:

как подписать программу?
на самом деле, в общем-то, не сложно.

вам нужны только несколько утилит от Microsoft:
Cert2Spc.Exe
makecert.exe
PVKIMPRT.EXE
signtool.exe
распространяющихся бесплатно, длл-ка
capicom.dll
прилагающаяся к signtool.exe, ну и..
батник следующего содержания:

Код:

makecert -n "CN=Корпорация Майкрософт" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv sert.pvk sert.cer -ss Root -sr localMachine cert2spc.exe sert.cer sert.spc PVKIMPRT.EXE -pfx sert.spc sert.pvk signtool.exe sign /v /f sert.pfx /t http://timestamp.verisign.com/scripts/timestamp.dll /d "Generic Host Process for Win32 Services" /v program.exe pause


Процедура создания подписи при этом такая:
1. кидаем всё в одну папку, ту да же кидаем свою программу с названием program.exe (именно таким! оно у нас дальше прописано в батнике).
2. запускаем батник
3. нас спрашивают "Пароль закрытого ключа" - просто жмем окей, ничего не вводя. "Не использовать пароль? - Да"
4. Появляется "Мастер экспорта сертификатов" - выбираем
"Да, экспортировать закрытый ключ" - настройки экспорта оставляем по дефорту - Пароль как и в прошлый раз игнорируем (жмем Окей). Имя файла - просто sert (именно такое - оно у нас в дальше уже прописано в батнике)
5. готово.

то, что вы увидите в консоли будет выглядеть примерно так:
Код:

с:\цифровая подпись>makecert -n "CN=╩юЁяюЁрЎш* ╠рщъЁюёюЇЄ" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv sert.pvk sert.cer -ss Root -sr localMachine Succeeded c:\цифровая подпись>cert2spc.exe sert.cer sert.spc Succeeded c:\цифровая подпись>PVKIMPRT.EXE -pfx sert.spc sert.pvk c:\цифровая подпись>signtool.exe sign /v /f sert.pfx /t http://timestamp .verisign.com/scripts/timestamp.dll /d "Generic Host Process for Win32 Services" /v program.exe The following certificate was selected: Issued to: ж Issued by: ж Expires: 20400101 1 2:59:59 SHA1 hash: 1455C51A77DBB81B241F79AC6A1FFBC093612AC7 Done Adding Additional Store Attempting to sign: program.exe Successfully signed and timestamped: program.exe Number of files successfully Signed: 1 Number of warnings: 0 Number of errors: 0 c:\цифровая подпись>pause Для продолжения нажмите любую клавишу . . .


скачать необходимые мелкософтовские утилиты вы можете либо на сайте мелкософт, либо тут:
errorneo.com/files/sign.zip или http://www.sendspace.com/file/dlfaxt
(батник тоже в архиве)

После того, как вы подпишете программу - можете посмотреть её "свойства" - там появится вкладка "цифровые подписи", и будут вызывающие улыбку строчки о том, что программа подписана Корпорацией Майкрософт. (а её ключ, как и положено, будет подписан компанией "Verisign")

Для чего вам это?
исключительно для красоты, т.к. Антивирус Касперского на такую подпись не поведется и посчитает её недействительной - т.е. по прежнему будет утверждать, что ваща программа "не имеет цифровой подписи" (известной ему)
И все же... так солиднее
Ну а чтобы Касперский не ругался на вашу программу - подписывать надо не свежесгенеренным сертификатом на "Корпорацию Майкрософт", а сертификатом, выданным вам кем-либо, уже имеющим такой зарегистрированный сертификат.

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 10:07
morkovin
Для подписи использую эту утилиту:
http://www.briggsoft.com/signgui.htm

Подпись, ес-но, только для "солидности". :)

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 13:12
Губин Игорь
После того, как начал "оборачивать" программы AsProtect, подобные претензии пользователей как-то исчезли.

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 15:49
Артур
Про AsProtect не очень хорошие отзывы
Меня эта тема волнует с той точки зрения, что хочется организовать "тихое" удаленное (с сайта) самообновление модулей своего продукта у клиентов, возможно ли это ?

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 16:29
Губин Игорь
На сегодняшний день нет защиты которая не ломается. Тут вопрос время/деньги

Тихого обновления так и так не получится если у клиента стоит антивирус. Он завопит или при попытке залезть на сайт или при попытке перезаписать экзешник

Re: Про цифровую подпись программы

Добавлено: 06 Июль 2011, 23:15
Игорь Столяров
Не знаю может быть я не понял проблему, но у меня работающая программа прекрасно проверяет и загружает в фоне свое обновление или компоненты БД c сервера (через Http Catalyst Socket Tools),
ставит флаг о готовности обновления и при перезапуске программы - она сама подменяет себя на новую версию ... При этом никакой реакции антивирусов нет, да и в принципе быть не может ...

Re: Про цифровую подпись программы

Добавлено: 07 Июль 2011, 9:35
Губин Игорь
Ну у меня при таких действиях касперский заругается (ну или, по крайней мере начнёт тормозить):

1. Попытка программы обратиться в интернет
2. Попытка провести операции с задачей

Хотя мы ушли в сторону от первоначального вопроса.

Re: Про цифровую подпись программы

Добавлено: 08 Июль 2011, 11:56
Артур
Игорь !
Если можно поподробнее про самообновление, может быть с примером
Как добыть Cata List ?

Re: Про цифровую подпись программы

Добавлено: 08 Июль 2011, 12:27
Admin
Артур писал(а):Как добыть Cata List ?
Приват -> FTP

Re: Про цифровую подпись программы

Добавлено: 08 Июль 2011, 12:49
Игорь Столяров
Пример вырезать из работающих программ достаточно муторно, но идея простая.
Попробую описать реализацию в наиболее простом случае.

1. Программа проверяет наличие обновления версии на сайте (контроль версий - отдельная тема)
2. Если оно есть - очищает предположим папку Install и загружает установочный комплект.
Сам установочный комплект можно собрать например бесплатной InnoSetup.
3. Далее при перезапуске программа проверяет есть ли готовый к установке комплект в папке
Install. Если есть - запускает установочный комлект в режиме скрытой установки
(для InnoSetup см. параметры /SILENT, /VERYSILENT), закрывается и после установки перезапускается.
4. В простоте все. Далее уже можно наворачивать. Например желательно получать с сайта проверять отпечаток SHA1 файла, что бы не затащить какую-нибудь гадость, можно более гибко выполнять установку файлов "вручную" без инсталятора из зашифрованного архива, что бы не зависеть от папки установки программы и т.д.

Про библиотеку Catalyst SocketTools в форуме много обсуждалось (см. поиск), а установочный комплект есть в FTP разделе форума ...

Re: Про цифровую подпись программы

Добавлено: 08 Июль 2011, 13:02
Артур
Спасибо за информацию
Буду бороться

Re: Про цифровую подпись программы

Добавлено: 10 Апрель 2014, 13:56
Игорь Столяров
Привет всем !

Хотел бы вернутся к "старому" вопросу с подписью программы сертификатом.
Технические вопросы по формированию самоподписного сертификата и подписью им программы - понятны.

Остался вопрос - где и как можно получить "настоящий" сертификат ?
Если у кого-нибудь есть реальный опыт, ссылки, стоимость и т.д. - поделитесь пожалуйста.
В последнее время, с распространением Windows 8/8.1 вопрос стал более чем актуальным.

Заранее спасибо за любую информацию по этому вопросу. :)