Подписываем плагин для Revit

|  Revit API

Подпишем addin для Revit само-подписанным цифровым сертификатом и заставим поверить Revit в то, что этот сертификат является доверенным. Данный алгоритм годится для подписи плагина сертификатом из центра сертификации.

Цифровой сертификат гарантирует, что подписанное издателем приложение не было изменено кем-либо. В двух словах как работает сертификация в Windows для приложений.


Цифровой сертификат выдают специальные сертифицирующие центры. Таких центров несколько и все они прописаны в хранилище сертификатов Windows, например: Comodo, DigiCert, GlobalSign, VeriSign. Данные компании сами или через своих посредников продают юридическим лицам цифровые сертификаты для подписи приложений (CodeSign). Физические лица не могут купить данный сертификат.


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

Если приложение подписано, Windows обращается к доверенным корневым центрам сертификации и, если находит издателя сертификата – сообщает о том, что файл подписан и сообщает нам имя издателя.



При запуске Revit также проверяет подпись dll плагина для Revit, также сообщает является плагин подписанным издателем или нет.



Что бы подписать плагин для Revit, сначала нужно раздобыть сертификат для подписи приложений (Code Sign). Сгенерируем самостоятельно само-подписанный сертификат в Windows 10.

Для этого нужно запустить PowerShell с правами администратора и ввести туда такую команду:


New-SelfSignedCertificate -Type Custom -Subject "CN=Bim3d Software " -KeyUsage DigitalSignature -FriendlyName "Bim3d Software" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")


-Subject – здесь прописывает имя организации
-FriendlyName – понятное имя сертификата
-CertStoreLocation – указывает где будет храниться сертификат
-TextExtension – расширение, которое указывается что это само-подписанный сертификат для подписывания кода


Дальше скопируем сертификат в файл.


Далее запускаем оснастку ММС, (команда mmc в поиске Windows), добавим сертификаты (Файлы-> Добавить или удалить оснастку, находим Сертификаты и добавляем.

Далее идем  Сертификаты -текущий пользователь -> Сертификаты -> Личное и дважды щелкаем на наш сертификат, Состав ->Копировать в файл. Выбираем опцию копировать закрытый ключ, задаем пароль имя , тип шифрования SHA256 и копируем.

Само-подписанный сертификат готов.


Теперь можно подписать плагин. Для этого нужно использовать программу SignTool, которая поставляется вместе Visual Studio (сам Visual Studio нельзя использовать для подписи плагина Revit).


Запускаем с правами администратора командную строку (команда cmd в поиске Windows) и вводим команду:


"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\signtool.exe" sign /fd sha256 /f "D:\aaa1.pfx" /p "mypassword" /t http://timestamp.verisign.com/scripts/timstamp.dll "D:\Plagin.dll"

/fd sha256 – тип шифрования SHA256/f – путь к сертификату

/p – пароль сертификата

 

/t http://timestamp.verisign.com/scripts/timstamp.dll - метка времени - можно не использовать. Метка времени нужна, что подпись считалась действительной, после того, как срок сертификата истечет.

Размещаем подписанный dll в папке с плагином и ничего не делаем. Windows ничего не знает про наш само-подписанный сертификат, потому что при поставке Windows в папке доверенных центров сертификации нашего сертификата нет и быть не может. Сейчас при запуске Revit привычно скажет, что плагин не подписан и доверять ему не стоит.


Импортируем само-подписанный сертификат в хранилище Доверенных корневых центров сертификации. Дважды жмем в проводнике на сертификат, выбираем хранилище текущего пользователя, выбираем Доверенный корневой центр сертификации и импортируем сертификат.



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

После всех наших экспериментов не забудьте удалить само-подписанный сертификат из хранилища доверенных корневых центров. Само-подписанный сертификат в хранилище Доверенных корневых центров – это дыра в безопасности системы. Запустите хранилище сертификатов текущего пользователя (команда certmgr.msc

 

в поске Windows) и удалите сертификат.

Поддержите разработку приложений для Revit.

Подписывайтесь ВКонтакте!

Подписывайтесь в Facebook!

Следите за BIM3D в Твиттере!

Извините за предствленные неудобства. Всплывающее окно не побеспокоит Вас в ближайшее время!

Назад

BIM3D Tools для

Revit 2017, 2018 и 2019 и еще 2020

СКАЧАТЬ БЕСПЛАТНО
Архив новостей блога