Как безопасно хранить пароль .pfx для использования в MSBuild?
Мне нужно добавить подпись сертификата в мою сборку. Ниже приведен пример рабочего script, который я написал, однако он включает в себя пароль для файла .pfx. Я не могу сохранить пароль в сборке script. Что такое "лучшие практики" или хаки, которые вы использовали бы в этом типе ситуации?
<ItemGroup Label="SignFiles">
<SignFilesInclude="$(FileLocation)\**\*.exe"/>
</ItemGroup>
<Exec Command="$(SignTool) sign /v /ac C:\MSCV-VSClass3.cer /f C:\Certificate.pfx /p Password /t http://timestamp.verisign.com/scripts/timestamp.dll %(SignFiles.Identity)"/>
После поиска в Интернете я читаю в нескольких местах, что после первого запуска script с паролем .pfx хранится в хранилище сертификатов, и пароль не потребуется в сборке script после что. Это работает, однако я хочу убедиться, что это лучший способ сделать это или еще лучше, есть способ избежать ввода пароля в script.
Ответы
Ответ 1
Импортируйте ваш .pfx файл в диспетчер сертификатов Windows для учетной записи пользователя, которая используется при создании. Затем выберите правильный сертификат, используя переключатель signtool/sha1, и пароль не нужен.
- Войдите как пользователь сборки
- Выполнить
certmgr.msc
- Щелкните правой кнопкой мыши Сертификаты - Текущий пользователь/Личный/Сертификаты и выберите Все задачи/Импорт...
- Выберите ваш .pfx файл, введите пароль и нажмите "Далее" и "Готово"
- Дважды щелкните импортированный сертификат
- На странице "Сведения" алгоритм отпечатка должен быть sha1
- Скопируйте отпечаток, он выглядит примерно как
12 34 56 78 90 ab cd ef 12 34 56 78 90 ab cd ef 12 34 56 78
-
signtool /sha1 1234567890abcdef1234567890abcdef12345678 /t http://timestamp.verisign.com/scripts/timestamp.dll %(SignFiles.Identity)
И шаг 8 не будет запрашивать пароль.