Integración de firma de código en la nube con acciones de GitHub

Este artículo de guía demuestra cómo eSigner se integra con GitHub Actions para la firma de código automatizada en una configuración de Integración continua/Entrega continua (CI/CD).

eSigner es nuestra plataforma de firma basada en la nube en la que confían los desarrolladores de software de todo el mundo para llevar a cabo la firma de códigos empresariales sin necesidad de tokens USB u otro hardware especializado.  Uno de los componentes de eSigner es CodeSignTool: una utilidad de línea de comandos impulsada por la privacidad que es muy eficaz para los desarrolladores que desean automatizar la firma de código.  Las siguientes secciones demuestran cómo puede firmar un código Java (Maven) en GitHub Actions usando eSigner CodeSignTool.

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

Uso

- nombre: Firmar artefacto con CodeSignTool

  usos: sslcom/actions-codesigner@desarrollar

  con:

  •      Comandos de CodeSignTool:

     – get_credential_ids: genera la lista de ID de credenciales de eSigner asociadas con un usuario.

     – credential_info: Salida de información de clave y certificado relacionada con un ID de credencial.

     – sign: Objeto de código de firma y marca de tiempo.

     – batch_sign: Firme y marque la fecha y hora de varios objetos de código con una sola OTP.

     – hash: Precalcular hash(es) para su uso posterior con el comando batch_hash_sign.

     – batch_sign_hash: Signo(s) hash(es) calculado(s) previamente con el comando hash.

        mando: firmar

 

  • Nombre de usuario de la cuenta SSL.com.

         username: ${{secrets.ES_USERNAME}}

  •  Contraseña de la cuenta SSL.com.

         password: ${{secrets.ES_PASSWORD}}

  • ID de credencial para el certificado de firma.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • Ruta del objeto de código que se va a firmar.

          file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar

  • Directorio donde se escribirán los objetos de código firmado.

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

Ingresos

  • nombre de usuario: nombre de usuario de la cuenta SSL.com. (Requerido)
  • la 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)
  • ruta de archivo: ruta del objeto de código que se firmará. (Requerido)
  • ruta de salida: 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 JAR de código Java (Maven)

Preparar los componentes del flujo de trabajo

  1. Cree una carpeta de Github en su editor. Incluya flujos de trabajo con la carpeta y cree un archivo yml debajo de la carpeta.
    1. Nombre su proyecto y el tipo de flujo de trabajo involucrado
    Nombre: Maven construir y firmar
     
    1. Active este flujo de trabajo en un momento
    en: empujar
     
    1. Crea una variable de entorno
    • 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 MAVEN_VERSION. La firma aún puede proceder incluso con estas omisiones.
    env: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. Define los trabajos en tu editor
    trabajos: build-and-sign-jar:
     
    1. Ejecutar trabajo en Ubuntu Runner
        se ejecuta en: ubuntu-latest
     
    1. Crea un nombre. Cuando se ejecuta el flujo de trabajo, este es el nombre que se registra.
      nombre: CodeSigner en Java con Maven
     

Describa los pasos para comprobar el código fuente, configurar el entorno Java y Maven y crear el directorio de artefactos.

  1) Consulte el código fuente para que el flujo de trabajo pueda acceder a él.

   pasos: - usos: acciones/checkout@v2
 

  2) Configure el entorno Java y Maven para que lo use el flujo de trabajo.

    - nombre: Instale Maven y usos de Java: s4u/setup-maven-action@v1.3.1 con: java-version: '${{env.JAVA_VERSION}}' maven-version: '${{env.MAVEN_VERSION}}'

 

      3) Crear un directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar

 - nombre: Create Directory shell: bash run: | mkdir ${GITHUB_WORKSPACE}/artefactos mkdir ${GITHUB_WORKSPACE}/paquetes

 

      4) Cree un proyecto o solución maven y todas sus dependencias.

      Después de que se haya creado el archivo jar, cópielo en la carpeta 'paquetes' para firmar

  • En este flujo de trabajo de ejemplo de firma escrita, se crearon varios tipos de proyectos. Es por eso que los archivos de diferentes tipos de proyectos se mantuvieron creando subcarpetas. Se creó una subcarpeta llamada 'java' para proyectos Java. En la captura de pantalla de demostración anterior, no había necesidad de crear una subcarpeta llamada 'java', por lo que no se incluyó en el script.
 - nombre: Build Java Project shell: bash run: | mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. frasco
 

Resuma los pasos para los trabajos de Firmar y Cargar

  1. El trabajo de firma es el paso en el que los archivos JAR (artefactos) creados se firmarán con CodeSignTool.
 - nombre: Sign Artifact uses: sslcom/actions-codesigner@develop con:

           Objeto de código de firma y marca de tiempo.

comando: firmar

           Nombre de usuario de la cuenta SSL.com.

nombre de usuario: ${{secrets.ES_USERNAME}}

           Contraseña de la cuenta SSL.com.

contraseña: ${{secretos.ES_PASSWORD}}

           ID de credencial para el certificado de firma.

credential_id: ${{secretos.CREDENTIAL_ID}}

           Secreto TOTP de OAuth (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret: ${{secretos.ES_TOTP_SECRET}}

           Ruta del objeto de código que se va a firmar. (Archivos DLL, JAR, EXE, MSI vb… )

  ruta_del_archivo: ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           Directorio donde se escribirán los objetos de código firmado.

ruta_de_salida: ${GITHUB_WORKSPACE}/artefactos

 

  1. El trabajo de carga es el paso en el que se cargarán los artefactos de su flujo de trabajo, lo que le permitirá compartir datos entre trabajos y almacenar datos una vez que se complete un flujo de trabajo.
 - nombre: Subir archivos firmados usa: actions/upload-artifact@v2 con: nombre: ${{env.PROJECT_NAME}}.jar ruta: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Obtenga un cargador de artefactos de compilación de Github Marketplace

Revise su script de codificación

En general, el script de codificación para los trabajos de creación, firma y carga debe verse como la imagen a continuación. Asegúrese de corregir cualquier error, como errores ortográficos o saltos de línea erróneos en el guión, para que el proceso de firma se realice sin problemas.

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

Defina sus variables de entorno

Vaya a la ubicación de su proyecto en su cuenta de Github. Haga clic en el Acciones lengüeta. Haga clic en el Nuevo repositorio secreto para colocar los valores de cada variable de entorno necesaria para firmar su código.

Crear un nuevo repositorio en la línea de comando

Proceda a la ubicación de su proyecto en Github y copie cada componente del comando push.

Empuje el proyecto

Incluya cada línea de comando push en su editor de código. Al finalizar, el código se insertará automáticamente en Github.

Espere a que el artefacto se firme con eSigner CodeSignTool

Sube el archivo firmado

Haga clic en el archivo firmado para cargarlo.

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.

Ejemplo de canalización de acciones de Github


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

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.