Skip to main content

Acerca de la verificación de firma de confirmación

Puede firmar etiquetas y confirmaciones localmente utilizando GPG, SSH o S/MIME. Estas etiquetas o confirmaciones de cambios están marcadas como verificadas en GitHub para que otras personas puedan confiar en que los cambios provienen de una fuente de confianza.

Acerca de la verificación de firma de confirmación

Puedes firmar confirmaciones y etiquetas localmente para darles a otras personas la confianza necesaria sobre el origen de un cambio que hayas realizado. Si una confirmación o etiqueta tiene una firma GPG, SSH o S/MIME que es verificable criptográficamente, GitHub marca la confirmación o la etiqueta Comprobado".

Captura de pantalla de una confirmación en la lista de confirmaciones de un repositorio. "Comprobado" está resaltado con un contorno naranja.

Si una confirmación o etiqueta tiene una firma que no se puede comprobar, GitHub marca la confirmación o etiqueta "Sin comprobar".

Para la mayoría de los usuarios individuales, GPG o SSH serán la mejor opción para firmar confirmaciones. Las firmas S/MIME suelen ser necesarias en el contexto de una organización de mayor tamaño. Las firmas SSH son las más sencillas de generar. Incluso puede cargar la clave de autenticación existente en GitHub para que también se use como clave de firma. La generación de una clave de firma GPG es más complicado que una de tipo SSH, pero GPG tiene características que SSH no posee. Una clave GPG puede expirar o revocarse cuando ya no se use. La firma GPG puede incluir la información de que haya expirado o haya sido revocada.

Verificación persistente de firma de confirmación

Independientemente de la opción de firma (GPG, SSH o S/MIME), una vez que se comprueba una firma de confirmación, permanece verificada dentro de la red de su repositorio. Consulta Entender las conexiones entre repositorios.

Cuando se verifica la firma de un commit al hacer push a GitHub, se almacena un registro de verificación junto al commit. Este registro no se puede editar y se conservará para que las firmas permanezcan verificadas con el tiempo, incluso si las claves de firma se rotan, revocan o si los colaboradores abandonan la organización.

El registro de verificación incluye una marca de tiempo que indica cuándo se realizó la verificación. Este registro persistente garantiza un estado verificado coherente, que proporciona un historial estable de contribuciones dentro del repositorio. Para ver esta marca de tiempo, mantenga el puntero sobre el distintivo "Verificado" en GitHub o acceda a la confirmación a través de la API REST, que incluye un verified_at campo. Consulta Puntos de conexión de la API de REST para confirmaciones.

La comprobación de firma de confirmación persistente se aplica a las nuevas confirmaciones insertadas en GitHub. En el caso de las confirmaciones anteriores a esta característica, se creará un registro persistente la próxima vez que se compruebe la firma de la confirmación en GitHub, lo que ayuda a garantizar que los estados comprobados permanezcan estables y confiables en el historial del repositorio.

Para obtener información sobre cómo deshabilitar la verificación de firma de confirmación persistente, consulta Deshabilitación de la comprobación de confirmación persistente.

Los registros se conservan incluso después de su revocación y expiración

La verificación persistente de firma de confirmaciones refleja el estado verificado de una confirmación en el momento de la verificación. Esto significa que si una clave de firma se revoca, expira o se altera de algún modo, las confirmaciones verificadas previamente conservan su estado verificado en función del registro creado durante la verificación inicial. GitHub no volverá a comprobar las confirmaciones firmadas anteriormente ni ajustará retroactivamente su estado de comprobación en respuesta a los cambios en el estado de la clave. Es posible que las organizaciones necesiten administrar los estados de las claves directamente para que estén en consonancia con sus directivas de seguridad, especialmente si se planea una rotación o revocación de las claves con frecuencia.

El registro de verificación se limita a su red de repositorios.

El registro de verificación es persistente en toda la red de repositorios, lo que significa que si el mismo commit se envía de nuevo al mismo repositorio o a cualquiera de sus bifurcaciones, se reutiliza el registro de verificación existente. Esto permite GitHub mantener un estado comprobado coherente en los repositorios relacionados sin volver a comprobar la confirmación cada vez que aparezca dentro de la red. Esta persistencia refuerza una visión unificada y fiable de la autenticidad de la confirmación en todas las instancias dentro de la red de repositorios.

Comprobación de firma para fusión mediante cambio de base y combinación

Al usar la opción Fusionar mediante cambio de base y combinar en una solicitud de incorporación de cambios, es importante tener en cuenta que las confirmaciones de la rama principal se agregan a la rama base sin confirmar la comprobación de la firma. Al usar esta opción, GitHub crea una confirmación modificada con los datos y el contenido de la confirmación original. Esto significa que GitHub no creó realmente esta confirmación y, por tanto, no puede firmarla como un usuario genérico del sistema. GitHub no tiene acceso a las claves de firma privada del confirmador, por lo que no puede firmar la confirmación en nombre del usuario.

Una solución para esta incidencia consiste en fusionar mediante cambio de base y combinar localmente y, luego, insertar los cambios en la rama base de la solicitud de incorporación de cambios.

Para más información, consulta Acerca de los métodos de combinación en GitHub.

Los administradores de repositorios pueden implementar la firma de confirmación requerida en una rama para bloquear todas las confirmaciones que no estén firmadas y verificadas. Para más información, consulta Acerca de las ramas protegidas.

Puedes comprobar el estado de verificación de tus confirmaciones o etiquetas firmadas en GitHub y ver por qué las firmas de tu confirmación podrían no ser verificadas. Para más información, consulta Comprobar el estado de verificación de firma de la confirmación y de la etiqueta.

Si un administrador de sitio ha habilitado la firma de confirmación web, GitHub usará automáticamente GPG para firmar confirmaciones que realice mediante la interfaz web. Las confirmaciones firmadas por GitHub tendrán un estado comprobado. Puede comprobar la firma localmente mediante la clave pública disponible en https://HOSTNAME/web-flow.gpg. Para más información, consulta Configuración de la firma de confirmación web.

Verificación de la firma del commit de GPG

Puedes usar GPG para firmar confirmaciones con una clave GPG que generas tu mismo.

GitHub usa bibliotecas openPGP para confirmar que las confirmaciones y etiquetas firmadas localmente son verificables criptográficamente con una clave pública que ha agregado a la cuenta en tu instancia de GitHub Enterprise Server.

Para firmar confirmaciones mediante GPG y comprobar esas confirmaciones en GitHub, siga estos pasos:

  1. Comprobación de las claves de GPG existentes
  2. Generación de una nueva clave SSH
  3. Agregar una clave GPG a la cuenta de GitHub
  4. Notificación de la clave de firma a Git
  5. Firma de confirmaciones
  6. Etiquetas de firma

Verificación de firma de confirmación SSH

Puedes usar SSH para firmar confirmaciones con una clave SSH que generes por tu cuenta. Para más información, consulta la documentación de referencia de Git para user.Signingkey. Si ya usa una clave SSH para autenticarse con GitHub, también puede volver a cargar esa misma clave para usarla como clave de firma. No hay ningún límite en el número de claves de firma que puedes agregar a tu cuenta.

GitHub usa ssh_data, una biblioteca de código abierto Ruby, para confirmar que las confirmaciones y etiquetas firmadas localmente son verificables criptográficamente con una clave pública que ha agregado a su cuenta en tu instancia de GitHub Enterprise Server.

Nota:

La verificación de la firma SSH está disponible en Git 2.34 o posterior. Para actualizar la versión de Git, vea el sitio web de Git.

Para firmar confirmaciones mediante SSH y comprobar esas confirmaciones en GitHub, siga estos pasos:

  1. Comprobar las claves SSH existentes
  2. Generación de una nueva clave SSH
  3. Agregar una clave de firma SSH a la cuenta de GitHub
  4. Notificación de la clave de firma a Git
  5. Firma de confirmaciones
  6. Etiquetas de firma

Verificación de la firma del commit S/MIME

Puedes usar S/MIME para firmar confirmaciones con una clave X.509 emitida por tu organización.

GitHub usa el paquete ca-certificates de Debian, el mismo almacén de confianza usado por los exploradores mozilla, para confirmar que las confirmaciones y etiquetas firmadas localmente son criptográficamente verificables en una clave pública en un certificado raíz de confianza.

Nota:

La verificación de la firma S/MIME está disponible en Git 2.19 o posterior. Para actualizar la versión de Git, vea el sitio web de Git.

Para firmar confirmaciones mediante S/MIME y comprobar esas confirmaciones en GitHub, siga estos pasos:

  1. Notificación de la clave de firma a Git
  2. Firma de confirmaciones
  3. Etiquetas de firma

No es necesario cargar la clave pública en GitHub.

Información adicional