Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

подпись кода



Когда делаешь что-то для себя, вопрос с подписью кода не возникает. Написал макрос, установил разрешение для запуска макросов и больше можно ни о чем не думать.

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

Однако нужно помнить, что сертификат для подписи кода можно получить не только в центрах сертификации (таких как Thawte, Comodo, Digicert...), но и выпустить самому. И работать такие сертификаты будут ничуть не хуже, по крайней мере в рамках одной организации. Весь вопрос в том, как организовать цепочку к корневому сертификату. Для изучения этого вопроса будут полезны такие статьи как "How to create your own code signing certificate and sign an ActiveX component in Windows" и "Self-Signed Certificate and Outlook VSTO Add-in Silent Installation".

Кроме того, нужно помнить, что заказчик (пользователь) имеет возможность переподписать приложение, то есть заверить его собственным сертификатом. В некоторых случаях это тоже является выходом.

Перечень литературы

02.10.2012  Code Signing сертификаты или сертификаты разработчика. Виды, как выбрать  s0laris.   

29.12.2011  How to create your own code signing certificate and sign an ActiveX component in Windows  diamantico.  Как создать свой сертификат и подписать ActiveX в Windows 

27.01.2009  Self-Signed Certificate and Outlook VSTO Add-in Silent Installation  Rex Tang.  Самоподписанный сертификат и автоматическая установка Add-in для Outlook 

Ответы на вопросы

Требуется помощь с сертификатами

У меня есть документ Visio с макросами VBA. Каждый раз, когда он открывается, пользователь должен щелкнуть -> enable the macros.
Есть ли способ:
а. установить автоматическое включение макросов в документе?
б. автоматически установить низкий уровень безопасности в документе?
Или в этом случае мне нужна цифровая подпись или сертификат для включения макросов без нажатия пользователем кнопки. Легко ли его получить? 

Автоматическое включение макросов через документ невозможно, потому что это именно то действие, против которого была разработана эта защита. То есть а) и б) невозможны.
Вы можете попросить своих пользователей переместить ваш документ в "trusted location", возможно, это самое простое:
http://office.microsoft.com/en-001/visio-help/create-remove-or-change-a-trusted-location-for-your-files-HA010031999.aspx
Вы также можете указать своим пользователям отключить эту защиту на уровне приложения. Это можно сделать в настройках приложения.
Чтобы открыть документ с макросами с настройками безопасности Visio по умолчанию без лишних запросов - да, вам нужен сертификат для подписи этого документа.
Если у вас есть только один пользователь, то вы можете самостоятельно создать "самоподписанный" сертификат на компьютере этого пользователя и подписать свой документ этим сертификатом, или ваш пользователь может сделать это сам. Это позволит открыть ваши документы без запроса безопасности.
Вы также можете создать "самоподписанный" сертификат и попросить своих пользователей установить его как "доверенный корневой центр сертификации" на своем компьютере (обратите внимание, что создание таких доверенных корней, вероятно, не очень хорошо с точки зрения безопасности).
Получение настоящего сертификата не очень сложно (но стоит денег). Вы можете получить либо личный сертификат, либо сертификат компании (для второго варианта вам, конечно, понадобится компания).
Чтобы получить личный сертификат, вам необходимо связаться с центром сертификации и подтвердить свою личность, что обычно включает отправку (по электронной почте) скана вашего паспорта / водительских прав, скана вашего последнего счета за телефон / электричество или тому подобного (чтобы они могли доказать где вы живете), и ваш номер телефона - (чтобы они могли перезвонить вам, чтобы проверить это). Обратите внимание, что сертификат будет выдан на точно ваше имя.
Если вы представляете компанию, данные, которые вы должны будете предоставить, зависят от страны, в которой вы находитесь (в разных странах существует разная система регистрации компаний, но в основном вас попросят предоставить своего рода "запись торгового реестра")
Я мог бы порекомендовать http://startssl.com (недавно обновил свой сертификат за 1 день). Двухлетний код подписи личного сертификата стоил 60 долларов.
Обратите внимание, что при подписании документов Visio вы должны настроить источник для отметки времени. Это сделано как параметр реестра. Если этого не сделать, срок действия подписи истекает после истечения срока действия сертификата. 

reg file:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\VBA\Security]
"TimeStampURL"="http://timestamp.verisign.com/scripts/timstamp.dll"
"TimeStampRetryCount"=dword:00000002
"TimeStampRetryDelay"=dword:00000002 

(Источник - http://visguy.com/vgforum/index.php?topic=4882.msg19179#msg19179). 

При подписывании манифеста определяется Invalid provider

Я создаю новую надстройку в VS2015, выполняю сборку, но получаю ошибку: error MSB3482: An error occurred while signing: Invalid provider type specified.
Я использую 64-разрядную версию Windows 7, 64-разрядную версию Visio 2016 Pro. Я думаю, что речь идет о подписи clickonce манифеста, и пытался сделать разные сертификаты, но все же не повезло. У кого-нибудь встречалась такая же проблема? 

Не совсем понятно, что вы подразумеваете под "сборкой". Просто собрать (скомпилировать) или собрать, а затем опубликовать?
Прямо из коробки компиляция должна просто работать без какого-либо сертификата (то есть, когда вы создаете новый проект и нажимаете F5 в Visual Studio)
Если вы просто создаете надстройку проекта, вам не нужен сертификат.
Удалите все подписи из проекта, VS отлично сделает все сам.
Если вы хотите опубликовать надстройку (нажав "Опубликовать..."), вам нужен действующий сертификат SHA2 (сертификаты SHA1 уже запрещены).
Обратите внимание, что все сертификаты, выданные за последние 2 года, являются сертификатами SHA2 - власти больше не выдают SHA1.
Поэтому, если вы попытаетесь опубликовать, используя старый сертификат (например, предоставленный вам компанией), вы можете столкнуться с чем-то вроде описанной вами ошибки.
(Источник - http://visguy.com/vgforum/index.php?topic=8333.msg36037#msg36037) 

Как установить Timestamp?

Если вы приобрели сертификат для подписи кода, вы можете использовать его для подписи макросов в ваших документах, трафаретах, шаблонах, а также для подписи exe, dll и vsl файлов. Для документов, трафаретов, шаблонов это делается через меню Tools -> Digital Signature в редакторе VBA.
Все это прекрасно работает в течение года, пока не истечет срок действия вашего сертификата, после чего весь код, который вы разослали своим клиентам по всему миру, внезапно выдает ошибки безопасности, поскольку подпись больше не действительна. Ничто в редакторе VBA не говорит вам об этом, на самом деле очень трудно найти какую-либо ссылку на это, это почти так, как если бы кто-то, кто разрабатывал процесс подписания макросов, делал это нарочно.
Все, что вам нужно сделать, это добавить такую запись в ваш реестр: 

[HKEY_CURRENT_USER\Software\Microsoft\VBA\Security]
"TimeStampUrl"="http://timestamp.verisign.com/scripts/timstamp.dll"
"TimeStampRetryCount"=dword:00000003
"TimeStampRetryDelay"=dword:0000001e 

с соответствующими дополнениями, чтобы подтвердить ваши права подписи.
С этой информацией, вы можете избежать нанесения ущерба репутации вашего бизнеса. 

(Источник - http://visguy.com/vgforum/index.php?topic=1090.msg4764#msg4764) 

Где купить сертификат для подписи макросов в трафарете?

Я планирую продавать свои трафареты с макросами VBA. Кто-нибудь покупал цифровые подписи? Не могли бы вы поделиться своим опытом и знаниями?
Моя цель - убедить своих клиентов в том, что продукт безопасен. Затраты на покупку у доверенных партнеров MS, похоже, побеждают любую прибыль, которую я рассчитываю получить. 

Я использую http://codesigning.ksoftware.net/ и вполне доволен.
Я мог бы рекомендовать этот: http://startssl.com/ - почти в три раза дешевле.
(2 класс - 60 долларов за 2 года). Это нормально для подписи для макроса / exe / setup.
Обратите внимание, что есть небольшая загвоздка - если клиент не запускал обновление Windows в течение 3 лет, этот сертификат не будет работать (они не так давно получили полномочия root).
Помните, что только если вам нужен WinQUAL (например, чтобы иметь возможность получать аварийные дампы вашей программы с серверов Microsoft) или, например, Если вы хотите получить драйвер устройства или пройти сертификацию Windows, вы должны обратиться в VeriSign / GlobalSign. (На самом деле, вы все еще можете купить его сейчас за $ 100 / год у VeriSign (сейчас у Symantec). Ссылка на покупку за $100 вместо $500 все еще присутствует на сайте VeriSign, их просто очень трудно найти).
Оказывается, у дешевых сертификатов StartSLL (60 долларов на 2 года) есть ограничение.
Срок действия подписи истекает по истечении срока действия сертификата, даже если подписанный двоичный файл / макрос имеет временную метку. То есть обычно срок действия подписи не истекает, когда истекает срок действия сертификата, если он был действителен на момент подписания; это не относится к (обычным) сертификатам StartSLL (для них установлен специальный флаг в сертификате).
(Источник - http://visguy.com/vgforum/index.php?topic=4403.msg20059#msg20059)