en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

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 Los 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. También puede use su certificado de firma de código EV a escala en la nube usando eSigner.

HAZ TU PEDIDO

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 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

Debajo 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 a Salvar 

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> Gestiona 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 } } } } }
 

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 enlace.

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

Debajo Fuentes de rama, Seleccione ir 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 a Salvar 

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.

Presiona 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

Para obtener información sobre una suscripción de eSigner y certificados de firma de código, incluidas soluciones personalizadas y de gran volumen, comuníquese con  o complete el formulario a continuación.  

Suscríbase al boletín de SSL.com

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