Как безопасно хранить пароль .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 не будет запрашивать пароль.