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

Este es un tutorial sobre cómo hacer una firma de código automatizada en GitLab CI usando eSigner CodeSignTool. 

CodeSignTool es una utilidad de línea de comando segura que forma parte de eSigner: nuestro entorno de firma de código en la nube que beneficia a los editores y desarrolladores de software con su capacidad para llevar a cabo la firma de código empresarial de manera segura y eficiente sin complicaciones.  El siguiente flujo de trabajo de muestra muestra un código DLL de .NET que se firma en GitLab CI con eSigner.

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

HAZ TU PEDIDO

Variables de entorno

  • NOMBRE DE USUARIO: nombre de usuario de la cuenta SSL.com. (Requerido)
  • CONTRASEÑA: Contraseña de la cuenta SSL.com (Obligatorio)
  • CREDENCIAL_ID: ID de credencial para el certificado de firma. Si se omite credential_id y el usuario tiene solo un certificado de firma de código de eSigner, CodeSignTool lo usará de forma predeterminada. Si el usuario tiene más de un certificado de firma de código, este parámetro es obligatorio. (Requerido)
  • TOTP_SECRETO: OAuth TOTP Secreto. Puede acceder a información detallada sobre https://www.ssl.com/how-to/automate-esigner-ev-code-signing (obligatorio)
  • ENTORNO_NOMBRE : Entorno 'TEST' o 'PROD'. (Requerido)

Ingresos

  • ruta_archivo_entrada: ruta del objeto de código que se firmará. (Requerido)
  • salida_dir_ruta: Directorio donde se escribirán los objetos de código firmados. Si se omite output_path, el archivo especificado en -file_path se sobrescribirá con el archivo firmado.

Flujo de trabajo de ejemplo de firma de DLL de código .NET

Crear un archivo yml

Agrupe los trabajos en etapas. Todos los trabajos en una etapa deben completarse antes de que se ejecute la siguiente etapa.

etapas: - construir - firmar
 

Definir variables de entorno globalmente. La propiedad de nivel de trabajo anula las variables globales.

  • Las variables de entorno se utilizan para hacer que las muestras sean más legibles. En la captura de pantalla anterior del flujo de trabajo de ejemplo, se omitieron opcionalmente PROJECT_NAME, PROJECT_VERSION y DOTNET_VERSION. La firma aún puede proceder con estas omisiones.  
  • En ENVIRONMENT_NAME, coloque "TEST" para la firma de prueba y "PROD" para la firma en vivo.
variables: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
 

Definir el Etapa de construcción

A continuación se muestra la definición de su trabajo para construir el artefacto dll

construir-dotnet:

 

  1. Defina en qué etapa se ejecutará el trabajo.
  etapa: construir

 

  1. Coloque el nombre completo de la imagen que se debe utilizar. Debe contener la parte del Registro si es necesario.
 imagen: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Defina los scripts que deben ejecutarse *antes* del trabajo. Se puede configurar globalmente o por trabajo.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artefactos - mkdir -p ${CI_PROJECT_DIR}/paquetes

 

  1. Defina los scripts de Shell ejecutados por el Runner. Crear artefacto DLL
script: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ NOMBRE_PROYECTO}.dll

 

  1. Especifique una lista de archivos y directorios que deben adjuntarse al trabajo si tiene éxito.
  • La 'expira en' propiedad permite que el archivo se elimine después de un cierto período de tiempo. Su uso es opcional. Esta es la razón por la que la captura de pantalla del flujo de trabajo de ejemplo anterior no muestra esta propiedad.
artefactos: rutas: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 minutos
 

Definir la etapa de signos

A continuación se muestra la definición de su trabajo para firmar el artefacto dll

firmar-dotnet-artefactos:

 

  1. Defina en qué etapa se ejecutará el trabajo.
  etapa: firmar

 

  1. Coloque el nombre completo de la imagen que se debe utilizar. Debe contener la parte del Registro si es necesario.
 imagen: ventana acoplable: 19.03.0

 

  1. Definir servicios. Esto es similar a la propiedad `image`, pero vinculará los servicios especificados al contenedor `image`.
servicios: - docker:19.03.0-dind

 

  1. Defina variables de entorno para trabajos específicos.
  • En la captura de pantalla anterior, el comando de firma se definió directamente en el script de firma y no en las variables de entorno. BAmbos métodos pueden firmar correctamente con TravisCI.
  variables: COMANDO: "firmar"

 

  1. Defina los scripts que deben ejecutarse *antes* del trabajo. Se puede configurar globalmente o por trabajo.
  before_script: - mkdir -p ${CI_PROJECT_DIR}/artefactos - mkdir -p ${CI_PROJECT_DIR}/paquetes

 

  1. Coloque los scripts de Shell ejecutados por el Runner. Firme el artefacto .NET dll con CodeSignTool Docker Image
script: - docker pull ghcr.io/sslcom/codesigner:latest - docker run -i --rm --dns 8.8.8.8 --network host --volume ${CI_PROJECT_DIR}/packages:/codesign/examples --volume $ {CI_PROJECT_DIR}/artifacts:/codesign/output -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:último ${COMANDO} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output

 

  1. Escriba el script que se puede usar para especificar una lista de archivos y directorios que se deben adjuntar al trabajo si tiene éxito.
artefactos: rutas: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 días

 

  1. Especifique una lista de nombres de trabajos de etapas anteriores desde las que se deben cargar los artefactos.
dependencias: - build-dotnet

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

HAZ TU PEDIDO

Iniciar la etapa de construcción

Crea un repositorio

Consulte las instrucciones de la línea de comandos en Gitlab como se ve en la captura de pantalla a continuación

Empuje su carpeta

Haz esto haciendo clic terminal en el menú, seguido de Nueva terminal.

Escriba el script de inserción en su terminal para impulsar el proyecto 

Haga clic en el botón Construir

Después de activar la canalización, proceda a compilar

Comprobar si la construcción es exitosa  

Iniciar la etapa de firma

Proceder a firmar el artefacto

Confirme si la firma del código es exitosa

Ahora puede descargar el archivo firmado

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 CI de Gitlab

Echa un vistazo a la canalización de Gitlab CI de muestra que hemos creado en github.com/SSLcom/codesigner-gitlabci-sample

Otras guías de integración de firma remota de CI/CD

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