Integración de firma de código en la nube con Jenkins CI

Esta es una guía sobre cómo realizar la firma de código automatizada en Jenkins con el uso de eSigner CodeSignTool.

CodeSignTool es una utilidad de línea de comandos adecuada para firmas de alto volumen y se integra a la perfección con varias plataformas de CI/CD. Forma parte de eSigner: nuestro servicio de firma remota que ofrece un enfoque eficiente, seguro y fácil de usar para la firma de código empresarial.

SSL.com's EV Firma de código Certificados ayudan a proteger su código de manipulaciones no autorizadas y compromisos con el más alto nivel de validación, y están disponibles por tan solo $ 249 por año.

COMPRA TU CERTIFICADO DE FIRMA DE CÓDIGO SSL.COM EV

Cree un archivo Jenkins y defina la canalización en su editor de código

canalización { agente cualquier opción { buildDiscarder(logRotator(numToKeepStr: "5")) disabledConcurrentBuilds() }

Configure la herramienta .NET en su editor de código configurando Jenkins

Haga clic en el Administrar Jenkins pestaña en su tablero de Jenkins.

Desplácese hacia abajo en la página y haga clic en Configuración global de herramientas.

Desplázate hacia abajo y haz clic Instalaciones SDK de .NET.

Copie el valor de .NET SDK y péguelo en su editor de código.

herramientas { dotnetsdk "DOTNET_CORE_3.1.24" }

Vaya a plugins.jenkins.io e instale el complemento .NET SDK

under Administrar Jenkins en tu Tablero, verifica Administrar complementos para confirmar si se ha instalado el complemento .NET SDK.

Después de confirmar que se instaló el complemento, vuelva a INSTALACIONES DE .NET SDK y asegúrese de que la versión correcta y los detalles de lanzamiento del complemento de .NET SDK estén configurados. Proceda a hacer clic en el Guardar del botón.

Establezca las variables de entorno en su editor de código

entorno { NOMBRE DE USUARIO = credenciales ('es-username') // nombre de usuario de la cuenta SSL.com. CONTRASEÑA = credenciales('es-password') // Contraseña de la cuenta SSL.com. CREDENTIAL_ID = credentials('es-crendential-id') // ID de la credencial para firmar el certificado. TOTP_SECRET = credenciales('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nombre del entorno. Para la cuenta de demostración, puede ser 'PRUEBA'; de lo contrario, será 'PROD'}

Encontrará los valores para cada variable en su tablero de Jenkins en Seguridad> Gestionar Cartas credenciales.

 

Establezca las etapas para crear el directorio de artefactos, extraer la imagen de la ventana acoplable, compilar .NET y firmar el código del artefacto

 

        1) Crear un directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar.
 stage('Crear directorio de artefactos') { pasos { sh 'mkdir ${ESPACIO DE TRABAJO}/artefactos' sh 'mkdir ${ESPACIO DE TRABAJO}/paquetes' } }
        2) Extraiga la imagen Docker del codiseñador del registro de Github.
stage('Docker Pull Image') { pasos { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Cree un proyecto o solución dotnet y todas sus dependencias. Después de crear el archivo dll o exe, cópielo en la carpeta 'paquetes' para firmar.
stage('Build Dotnet') { pasos { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HolaMundo.dll' } }
        4) Este es el paso en el que los archivos DLL (artefactos) creados se firmarán con CodeSignTool.
stage('Firmar y guardar el artefacto DLL de Dotnet Core') { pasos { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volumen ${ESPACIO DE TRABAJO}/artefactos:/codiseño/salida -e NOMBRE DE USUARIO=${NOMBRE DE USUARIO} -e CONTRASEÑA=${CONTRASEÑA} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENTORNO_NOMBRE} ghcr.io/sslcom/codesigner:última señal -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } publicar { siempre { archiveArtifacts artefactos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

SSL.com's EV Firma de código Certificados ayudan a proteger su código de manipulaciones no autorizadas y compromisos con el más alto nivel de validación, y están disponibles por tan solo $ 249 por año.

COMPRA TU CERTIFICADO DE FIRMA DE CÓDIGO SSL.COM EV

Crear un repositorio de Github

Copie cada uno de los componentes del comando push en Github.

Escriba los comandos en una nueva terminal en su editor de código para enviar el código.

Después de enviar el código, vaya a su cuenta de Github y copie el enlace URL de su proyecto.

Vaya a su cuenta de Jenkins y haga clic en el Crea un trabajo .

Elige Oleoducto de Ramales Múltiples, establezca el nombre de su proyecto y haga clic en el botón OK del botón.

under Fuentes de rama, seleccione Git y pegue el enlace URL de su proyecto Github.

Desplácese hacia abajo hasta Escanear activadores de canalización de varias sucursales. Marque la casilla para Periódicamente si no se ejecuta de otra manera. Puedes elegir 2 minutos.

Haga clic en el Guardar del botón.

Regrese a su cuenta de Jenkins, haga clic en su proyecto y confirme si la tubería ha comenzado

Haga clic en su proyecto Jenkins y seleccione Escanee la canalización de múltiples sucursales ahora en el tablero.

Haga clic Salida de consola

Desplácese hacia abajo y verifique si la firma del código es exitosa

Guión completo

Nota: asegúrese de corregir los errores tipográficos o los saltos de línea erróneos en el script para que el proceso de firma se realice sin problemas.

Definir la canalización

canalización { agente cualquier opción { buildDiscarder(logRotator(numToKeepStr: "5")) disabledConcurrentBuilds() }

Instalar herramientas de compilación

herramientas { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

Crea una variable de entorno

entorno { NOMBRE DE USUARIO = credenciales ('es-username') // nombre de usuario de la cuenta SSL.com. CONTRASEÑA = credenciales('es-password') // Contraseña de la cuenta SSL.com. CREDENTIAL_ID = credentials('es-crendential-id') // ID de la credencial para firmar el certificado. TOTP_SECRET = credenciales('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nombre del entorno. Para la cuenta de demostración, puede ser 'PRUEBA'; de lo contrario, será 'PROD'}

Guión para las etapas de construcción y firma

etapas { // 1) Crear directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar etapa ('Crear directorio de artefactos') { pasos { sh 'mkdir ${ESPACIO DE TRABAJO}/artifacts' sh 'mkdir ${ESPACIO DE TRABAJO}/paquetes' } } / / 2) Extraiga la imagen de Docker del codiseñador de la etapa de registro de Github ('Docker Pull Image') { pasos { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Cree un proyecto o una solución dotnet y todo sus dependencias. // Después de que se haya creado el archivo dll o exe, cópielo en la carpeta 'paquetes' para la etapa de firma ('Build Dotnet') { pasos { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/ Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) Este es el paso en el que los archivos DLL (artefactos) creados se firmarán con CodeSignTool. stage('Firmar y guardar el artefacto DLL de Dotnet Core') { pasos { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volumen ${ESPACIO DE TRABAJO}/artefactos:/codiseño/salida -e NOMBRE DE USUARIO=${NOMBRE DE USUARIO} -e CONTRASEÑA=${CONTRASEÑA} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ ENTORNO_NOMBRE} ghcr.io/sslcom/codesigner:última señal -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } publicar { siempre { archiveArtifacts artefactos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
Puede consultar el SSL.com Repositorio de Github que contiene los códigos fuente de la imagen de Docker y describe cómo usarlo: https://github.com/SSLcom/ci-images 

Ejemplo de canalización de Jenkins

Echa un vistazo a la canalización de muestra de Jenkins que hemos creado en github.com/SSLcom/codesigner-jenkins-muestra

Otras guías de integración de firma remota

¿Necesita soluciones personalizadas? 

Con nuestro conocimiento experto y personal de soporte de cinco estrellas, estamos listos y dispuestos a trabajar con usted en soluciones personalizadas o descuentos en firmas de alto volumen a nivel empresarial. Complete el siguiente formulario y nos pondremos en contacto.

Suscríbase al boletín de SSL.com

No te pierdas los nuevos artículos y actualizaciones de SSL.com

Manténgase informado y seguro

SSL.com es líder mundial en ciberseguridad, PKI y certificados digitales. Regístrese para recibir las últimas noticias, consejos y anuncios de productos de la industria de SSL.com.

Nos encantaría recibir tus comentarios

Responda nuestra encuesta y háganos saber lo que piensa sobre su compra reciente.