GitHub Actions es una plataforma de integración y desarrollo continuos (CI/CD) que permite a los usuarios automatizar sus procesos de compilación, prueba e implementación. Los usuarios pueden diseñar flujos de trabajo que compilan y prueban cada solicitud de extracción y envío a su repositorio o que implementan solicitudes de extracción fusionadas en producción. GitHub Actions es una potente herramienta que permite a los desarrolladores automatizar los flujos de trabajo dentro de sus repositorios de GitHub.
Cada flujo de trabajo se compone de uno o más trabajos, que a su vez constan de uno o más pasos. Cada paso es un conjunto de comandos que se ejecutan en un ejecutor, que es una máquina virtual que ejecuta los flujos de trabajo.
Introducción a GitHub Actions
Para empezar a usar GitHub Actions, necesitarás una cuenta de GitHub y un repositorio. Una vez creado el repositorio, puedes crear un nuevo flujo de trabajo añadiendo un archivo YAML al directorio .github/workflows de tu repositorio.
A continuación, se enumeran algunos de los términos que se utilizan en el flujo de trabajo que define el archivo YAML. Analicemos este flujo de trabajo para comprender su funcionamiento:
-
Nombre: Este es el nombre del flujo de trabajo. -
en: Esto especifica cuándo debe activarse el flujo de trabajo. Por ejemplo, el flujo de trabajo puede ejecutarse al abrir una solicitud de extracción en una rama. -
trabajos: Esta es una lista de trabajos que se ejecutarán como parte del flujo de trabajo. -
run-on: Esto especifica el sistema operativo y el entorno para la tarea. Podemos configurar un ejecutor autohospedado para nuestra tarea. Estamos configurando un ejecutor autohospedado para esto.
-
pasos: Esto especifica una lista de pasos que se ejecutarán como parte del trabajo.
-
Usos: Este es un atajo para usar una acción existente del GitHub Marketplace. En nuestro script, usamos la acción actions/checkout para extraer el código del repositorio.
-
Nombre: Este es el nombre del paso. -
ejecutar: Este es un comando de shell que se ejecutará como parte del paso.
Diseño de código con acciones de GitHub
La firma digital de código es el proceso de firmar digitalmente el código de un software para verificar su autenticidad e integridad. Es una medida de seguridad que ayuda a garantizar que el código no haya sido manipulado y provenga de una fuente confiable.
Podemos diseñar código usando acciones de GitHub. Para ello, creamos un flujo de trabajo en el repositorio deseado de GitHub y diseñamos código usando el script.
Los requisitos previos para realizar esta tarea incluyen:
- Un repositorio de GitHub (necesitará una cuenta de administrador).
- Un Runner donde se instala y configura Signtool y ECSigning KSP.
Antes de comenzar, necesitamos configurar un ejecutor. Este se instalará en el dispositivo donde tenga instalados y configurados Signtool y ECSigning KSP. Para hacerlo en su dispositivo, siga los pasos a continuación.
Para instalar y configurar Signtool siga los pasos a continuación:
Signtool se puede descargar como parte del SDK de Windows. Descargue el SDK de Windows aquí: ( developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/ )
Puede elegir instalar solo las herramientas de firma del SDK de Windows para aplicaciones de escritorio.
Abra el archivo winsdksetup.exe. Recuerde la ruta predeterminada que se muestra en la ruta de instalación, ya que será útil para ejecutar estos comandos desde el símbolo del sistema.

En la página de Privacidad de Windows Kits, cualquiera de las opciones para permitir que Microsoft recopile información es válida. Haga clic en Siguiente.

Acepta el acuerdo de licencia

Deseleccione todas las características excepto las Herramientas de firma del SDK de Windows para aplicaciones de escritorio y, a continuación, seleccione Instalar.

Cuando se le pregunte si desea permitir que esta aplicación realice cambios, seleccione Sí.


Haga clic en la barra de búsqueda de Windows en la barra de tareas y escriba “Editar las variables de entorno del sistema” y seleccione la opción del panel de control del mismo nombre.

Haga clic en variables de entorno.

Antes de editar la lista de variables, navegue hasta la ubicación donde está instalado el SDK de Windows usando el explorador de archivos. Debe copiar la ruta de la carpeta que contiene la aplicación signtool. La ruta predeterminada es C:\Archivos de programa (x86)\Windows Kits\10\bin\10.0.22621.0\x64 ( consulte la captura de pantalla a continuación). Asegúrese de hacer clic con el botón derecho y copiar la ruta como se muestra. También puede ver la aplicación signtool al final de la lista de archivos; este es el comando que ejecutará.

En la lista Variables del sistema, haga clic en Nuevo. A continuación, escriba Ruta como nombre de la variable y copie y pegue la ruta. Finalmente, haga clic en Aceptar en la ventana Variables de entorno y en la ventana Propiedades del sistema.

Para probar la instalación, abra el símbolo del sistema y escriba signtool; el resultado debería ser como se muestra a continuación.

La ubicación de instalación predeterminada de signtool es, por ejemplo: C:\Archivos de programa (x86)\Windows Kits\10\bin\10.0.22621.0\x64
Para configurar KSP siga los pasos a continuación:
Encryption Consulting le ofrece la solución CodeSignSecure . Esta solución le permite almacenar las claves de forma segura e inviolable, además de brindarle visibilidad y control total de las actividades de firma de código. Las claves privadas del certificado de firma de código se pueden almacenar en un HSM para eliminar los riesgos asociados con claves robadas, dañadas o utilizadas indebidamente.
Si está utilizando nuestra solución, puede descargar el KSP siguiendo los pasos a continuación:
- Registrarse en Código de firma seguro.
-
Navegar a: Repositorio de herramientas de firma.

- Descargar “Consultoría de cifrado CNG-SigningKSP”
-
Instale las herramientas de cliente con el instalador .MSI. Este automatiza gran parte de la configuración. Vaya a la ubicación donde se guardó el archivo descargado e inicie el instalador.

-
Haga clic en Siguiente cuando aparezca el asistente de instalación.

-
Haga clic en Siguiente.

- En la sección Nombre de usuario campo, tipo admin.
-
En el campo Código , copie el código del repositorio de la API de Postman . Haga clic en la API GetLoginToken y copie el código del cuerpo.
Descarga PostMan desde este enlace . Una vez descargado, haz clic en el botón "Saltar" en la parte inferior de la ventana. En el panel de control, agrega una nueva colección usando el botón con el signo más junto a "Colecciones".
API GetLoginToken (http://codesignsecureapi.encryptionconsulting.com/api/auth/GetLoginToken): Esta es la API más importante, ya que proporciona un token de portador para usar con el resto de las API. El contenido del cuerpo se muestra a continuación. El código funciona como contraseña para obtener el token de portador, el campo de usuario es el nombre de usuario y el campo de tipo de identidad especifica el tipo de usuario. Haga clic en Enviar para generar una salida que muestra el token de portador en la parte inferior. Copie este token para usarlo.

- Cambie la Identidad Tipo a 1.
- Abandonar URL base de la API lo mismo.
-
Haga clic en Siguiente.

-
Haga clic en Siguiente.

-
Luego se le notificará que este programa realizará cambios en su PC, haga clic en Sí.

-
La instalación ya está completa.

Para configurar el corredor, siga los pasos a continuación:
Navega a tu repositorio de Github.
- Vaya a Configuración del repositorio
- Desplácese hacia abajo hasta Acciones y seleccione Ejecutor en el menú desplegable.
Haga clic en Nuevo ejecutor autohospedado.

Después de hacerlo, puedes hacer clic en la imagen del corredor (macOS/Linux/Windows) que prefieras. Las instrucciones a continuación son para Windows. Verás varios comandos en la pantalla.
Ejecute los comandos que se muestran en la configuración del ejecutor. Los comandos también se detallan a continuación:
- mkdir acciones-runner; cd acciones-runner;
- Invocar-WebRequest-Url https://github.com/actions/runner/releases/download/v2.303.0/actions-runner-win-x64-2.303.0.zip -OutFile acciones-runner-win-x64-2.303.0.zip
- Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory(“$PWD/actions-runner-win-x64-2.303.0.zip”, “$PWD”)
- ./config.cmd –url https://github.com/Encryption-Consulting-LLC/CodeSignSecure-Desktop –token
Una vez que veas Github Actions escrito en tu pantalla, se te solicitará que te registres como corredor.

- Ingrese el nombre del grupo de corredores al cual agregar este corredor: [presione Enter para el valor predeterminado] (puede dejarlo como predeterminado).
- Ingrese el nombre del corredor: [presione Enter para CLIENTE] (Puede ingresar el nombre deseado para su corredor).
-
Este corredor tendrá las siguientes etiquetas: 'autoalojado', 'Windows', 'X64'
Ingrese etiquetas adicionales (por ejemplo, etiqueta-1, etiqueta-2): [presione Enter para omitir] (ingrese una etiqueta aquí, puede ser cualquier cosa, no abandone/omita este paso. El mismo nombre se usará más adelante para llamar al ejecutor en el script).
-
Lo siguiente se le solicitará en la pantalla una vez que haya terminado.
- Corredor añadido exitosamente
- La conexión del corredor es buena
- Configuración del corredor
Ingrese el nombre de la carpeta de trabajo: [presione Enter para _work] (puede dejarlo predeterminado o puede especificar una carpeta de su elección)
Configuraciones guardadas
- ¿Te gustaría usar el corredor como servicio? (S/N) [presiona Enter para N] (Ingresa Y)
-
Cuenta de usuario a utilizar para el servicio [presione Enter para NT AUTHORITY\NETWORK SERVICE] (Asegúrese de ingresar Administrador aquí)
(Se requieren privilegios de administrador para ejecutar el comando. Por lo tanto, es IMPRESCINDIBLE configurar al usuario como administrador)
- Contraseña para la cuenta CLIENTE\Administrador (Proporcione la contraseña de su cuenta de Administrador)
-
Una vez hecho esto, verá el siguiente mensaje en su pantalla.
Se mostrará como Acciones de servicio.runner. .
Otorgar permisos de archivo a 'CLIENTE\Administrador'.
Acciones de servicio.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree instaladas correctamente
Acciones de servicio.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree: la opción de recuperación se configuró correctamente
Acciones de servicio.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree configuradas correctamente para inicio automático retrasado
Acciones de servicio.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree configuradas correctamente
Esperando que comience el servicio…
Las acciones del servicio.runner.Encryption-Consulting-LLC-CodeSignSecure-Desktop.TryThree se iniciaron correctamente.
Una vez que el corredor esté configurado en su dispositivo, navegue a su repositorio en github.
Vaya a Acciones.
Haga clic en Nuevo flujo de trabajo
Haga clic en configurar un flujo de trabajo usted mismo

Así se verá tu editor. Puedes renombrar tu archivo .yaml o dejar el nombre predeterminado.

Agregue el siguiente script a su editor después de realizar algunos cambios o actualizar las variables.
nombre: Firma de código en: push: ramas: <[Nombre de su rama]> trabajos: compilación: se ejecuta en: pasos: - nombre: Código de pago usos: acciones/checkout@v2 - nombre: Código de firma ejecución: | signtool sign /csp "Proveedor de almacenamiento de claves de consultoría de cifrado" /kc /fd /f " " /tr /td SHA256 " "
Por favor, sustituya las variables especificadas en <nombre de la variable> . A continuación se ofrece una breve descripción de la variable esperada.
<ruta_de_archivo> : Aquí debe indicar la ruta del archivo que desea firmar. Ejemplo: C:\<nombre_de_carpeta>\<nombre_de_archivo>. Asegúrese de proporcionar un nombre de archivo con la extensión correcta.
<nombre de la clave> Se refiere a la clave criptográfica utilizada para firmar el código. Ejemplo: evcodesigning
<ubicación del certificado> : Un ejemplo de lo que se puede ingresar en este campo es C:\testing.pem. El archivo .pem del certificado DEBE incluirse en esta entrada. Puede generar un archivo .pem del certificado para la firma de código si tiene el nombre de la clave usando ECSigningKSP. Para ello, siga los comandos a continuación:
En su dispositivo donde tiene ECSigningKSP instalado y configurado, navegue a la carpeta de ECSigningKSP, que generalmente está presente en “C:\Program Files\Encryption Consulting\SigningKSP”
En el símbolo del sistema, acceda a este directorio.
Luego use el siguiente comando para obtener el archivo pem del certificado.
ECGetCert.exe <Nombre_de_clave> (ejemplo: ECGetCert.exe evcodesigning)
Proporcione la ubicación del certificado guardado.
<algoritmo de hash> : Debe proporcionar el nombre del algoritmo de hash, como SHA256, SHA384 o SHA512. Debe ser uno de estos tres valores.
Servidor de marcas de tiempo: Un servidor de marcas de tiempo proporciona una prueba de que una firma digital se realizó en un momento específico , lo que permite verificar en el futuro que un archivo se firmó en un momento determinado. El que solemos usar es http://timestamp.digicert.com
El comando que utilicé para firmar fue
signtool sign /csp "Proveedor de almacenamiento de claves de consultoría de cifrado" /kc evcodesigning /fd SHA256 /f "C:\Usuarios\Administrador\Escritorio\ForTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Usuarios\Administrador\Escritorio\ForTesting\AgentService.exe"
El guión que utilicé fue:
Nombre: Firma de código en: push: ramas: [ Github_Actions ] trabajos: compilación: se ejecuta en: ejecutor pasos: - Nombre: Código de verificación usos: acciones/checkout@v2 - Nombre: Código de firma ejecución: | signtool sign /csp "Proveedor de almacenamiento de claves de consultoría de cifrado" /kc evcodesigning /fd SHA256 /f "C:\Users\Administrator\Desktop\ForTesting\evcodesigning.pem" /tr http://timestamp.digicert.com /td SHA256 "C:\Users\Administrator\Desktop\ForTesting\AgentService.exe"
Una vez editado el script, haz clic en "Confirmar". Puedes confirmar directamente en tu rama predeterminada o en una nueva. Asegúrate de actualizar el nombre de la rama dentro del código. Tras confirmar, el trabajo se ejecutará.

Conclusión
Encryption Consulting le ofrece una solución de firma de código conocida como CodeSign Secure . Puede contactarnos para obtener el SigningKSP y el nombre de la clave. La firma de código mediante GitHub Actions es un proceso sencillo. El usuario solo tendrá que configurar el ejecutor y ejecutar su script. Puede contactarnos en [email protected] para cualquier consulta.
