azure-devops azure-pipelines azure-pipelines-build-task

azure devops - Visual Studio Team Services despliega/error de certificado buildt



azure-devops azure-pipelines (3)

En lugar de usar una compilación local o cargar los certificados en los almacenes de certificados en el agente de compilación (que podría considerarse inseguro), es posible sobrescribir la tarea de compilación FileSign y construir una que use un archivo de certificado y una contraseña.

He esbozado los pasos aquí: https://stackoverflow.com/a/55313239/2068626

Estoy tratando de crear una aplicación de un solo clic con la función de integración y despliegue continuo en VSTS (Servicios de equipo de Visual Studio en línea) Estamos tratando de construir esto usando el agente alojado Visual Studio 2015 Tuvimos dificultades para firmar el archivo de clave de nombre seguro con un error de

MSB3326: Cannot import the following key file: xxxx.snk. The key file may be password protected. To correct this, try to import the certificate again or import the certificate manually into the current user''s personal certificate store. Y después de eso

MSB3321: Importing key file "xxxx.pfx" was canceled.

Traté de seleccionar tanto desde la tienda como desde el archivo, cambié la ubicación y me aseguré de comprometerme, pero sin éxito. Alguna idea de cómo puedo superar estos errores o qué estoy haciendo mal.

Clerificación en respuesta seleccionada

Solo quería aclarar si alguien más tiene el mismo problema, además de la respuesta, tuve que colocar mi certificado en mi código de control de origen y confirmarlo. Luego, para seleccionar su ubicación, agregue una variable global en la compilación VSTS

$cert.Import("$(CertPath)", $password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"PersistKeySet") Donde $ (CertPath) sería algo así como $(Build.SourcesDirectory)/SharedSolutionFiles/CertificateName.pfx


La mejor manera es que puede configurar un agente de compilación local e importar el certificado al almacén de certificados, luego cambiar la cuenta de servicio del agente de compilación a la misma cuenta.


Puede crear una secuencia de comandos de PowerShell y agregar un paso de secuencia de comandos de PowerShell en su definición de compilación para importar el archivo de certificado antes del paso VSBuild.

La compilación falló sin el paso de certificado de importación de PowerShell:

Compilación aprobada con el paso de certificado de importación de PowerShell:

El script de PowerShell que utilicé:

$pfxpath = ''pathtoees.pfx'' $password = ''password'' Add-Type -AssemblyName System.Security $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $cert.Import($pfxpath, $password, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]"PersistKeySet") $store = new-object system.security.cryptography.X509Certificates.X509Store -argumentlist "MY", CurrentUser $store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]"ReadWrite") $store.Add($cert) $store.Close()