Полный путь к загруженному защищенному файлу сохраняется в переменной среды $ env: DOWNLOADSECUREFILE_SECUREFILEPATH . Для получения дополнительной информации о задаче «Загрузить защищенный файл» см. Этот документ .
Мы могли бы получить certThumbprint со следующим кодом
$CertificatePath = "$env:DOWNLOADSECUREFILE_SECUREFILEPATH"
$sSecStrPassword = "xxxxx"
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $sSecStrPassword, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$thumbprint = $certificateObject.Thumbprint
Если мы не хотим использовать имя пользователя и пароль в коде напрямую. Мы могли бы использовать Azure Pipeline library . И мы могли бы сослаться на это в коде.
Если вы хотите зашифровать и надежно сохранить значение, выберите значок «замок» в конце строки. Когда вы закончите добавление переменных, выберите Сохранить
Вы получаете доступ к значению переменных в связанной группе переменных точно так же, как переменные, которые вы определяете в самом конвейере. Например, чтобы получить доступ к значению переменной с именем customer в группе переменных, связанной с конвейером, используйте $ (customer) в параметре задачи или в скрипте. Однако секретные переменные (зашифрованные переменные и переменные хранилища ключей) не могут быть доступны непосредственно в сценариях - вместо этого они должны быть переданы как аргументы в задачу
Если я добавлю переменную с именем sSecStrPassword в библиотеку. Тогда код можно изменить следующим образом:
function GetThumbprintPFX {
param([string] $CertificatePath, [string]$Password)
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $Password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$thumbprint = $certificateObject.Thumbprint
return $thumbprint
}
$thumbprint = GetThumbprintPFX -CertificatePath $env:DOWNLOADSECUREFILE_SECUREFILEPATH -Password '$(sSecStrPassword)'
Write-Host "$thumbprint"
Результат теста:
Для получения дополнительной информации о группах переменных, пожалуйста, перейдите по этой ссылке . А Azure Key Vault - это еще один выбор для требований безопасности .
Обновление:
Ниже приведены подробные инструкции по использованию файла pfx в конвейере Azure Devops.
- подготовить файл .pfx.
- Добавьте задачу загрузки безопасного файла и загрузите файл pfx.
- создать группу переменных и добавить переменную с именем sSecStrPassword
- связать переменную со сборкой
- Добавьте задачу скрипта powershell и добавьте в нее следующий скрипт.
# Write your powershell commands here.
Write-Host $env:DOWNLOADSECUREFILE_SECUREFILEPATH
function GetThumbprintPFX {
param([string] $CertificatePath, [string]$Password)
$certificateObject = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$certificateObject.Import($CertificatePath, $Password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet)
$thumbprint = $certificateObject.Thumbprint
return $thumbprint
}
$thumbprint = GetThumbprintPFX -CertificatePath $env:DOWNLOADSECUREFILE_SECUREFILEPATH -Password '$(sSecStrPassword)'
Write-Host "$thumbprint"
- поставить в очередь сборку и проверить результат.