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 se marcan como verificadas en GitHub para que otras personas tengan la confianza de que los cambios vienen de una fuente confiable.

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 se pueda verificar de forma criptográfica, GitHub la marcará como "Verificada" o "Parcialmente verificada".

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

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 puedes 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 sobre que ha expirado o revocado.

Las confirmaciones y etiquetas tienen los siguientes estados de verificación dependiendo de si las habilitaste en modo vigilante. Predeterminadamente, el modo vigilante no está habilitado. Para obtener información sobre cómo habilitar el modo de vigilancia, consulta Mostrar los estados de verificación para todas tus confirmaciones.

La firma de confirmaciones difiere de la aprobación de confirmaciones. Para más información sobre la aprobación de las confirmaciones, consulta Administración de la directiva de aprobación de confirmaciones para el repositorio.

Estados predeterminados

EstadoDescripción
VerifiedLa confirmación se firmó y la firma se verificó con éxito.
Sin verificarLa confirmación se firmó pero la firma no pudo verificarse.
Sin estado de verificaciónLa confirmación no se firmó.

Verificación de firma de confirmación persistente

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 una firma de confirmación después de que se han enviado los cambios a GitHub, se almacena un registro de verificación junto con la confirmación. 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, mantén el puntero sobre el distintivo "Verified" en GitHub o accede a la confirmación a través de la API de REST, que incluye un campo verified_at. Consulta Puntos de conexión de la API de REST para confirmaciones.

La verificación de la firma de confirmación persistente se aplica a las nuevas confirmaciones cuyos cambios se han enviado a GitHub. En el caso de las confirmaciones anteriores a esta característica, se creará un registro persistente la próxima vez que la firma de la confirmación se verifique en GitHub, lo que ayuda a garantizar que los estados verificados permanezcan estables y confiables en todo el historial del repositorio.

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

La verificación de la firma de confirmación persistente 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 verificar las confirmaciones firmadas previamente ni ajustará retroactivamente su estado de verificació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 los cambios en la misma confirmación se envían de nuevo al mismo repositorio o a cualquiera de sus bifurcaciones, se reutiliza el registro de verificación existente. Esto permite que GitHub mantenga un estado verificado coherente en todos los repositorios relacionados sin volver a verificar la confirmación cada vez que aparezca dentro de la red. Esta persistencia refuerza una visión unificada y confiable de la autenticidad de la confirmación en todas las instancias de la confirmación 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 fusión en GitHub.

Estados con modo vigilante habilitado

EstadoDescripción
VerifiedLa confirmación está firmada, la firma se verificó con éxito y el confirmante es el único autor que ha habilitado el modo vigilante.
Partially verifiedLa confirmación se firmó y la firma se verificó con éxito, pero la confirmación tiene un autor que: a) no es el confirmante y b) habilitó el modo vigilante. En este caso, la firma de confirmación no garantiza un consentimiento del autor, así que la confirmación se verifica solo parcialmente.
UnverifiedCualquiera de las siguientes afirmaciones es verdadera:
- La confirmación se ha firmado pero la firma no se ha podido verificar.
- La confirmación no está firmada y el confirmante ha habilitado el modo vigilante.
- La confirmación no está firmada y un autor ha habilitado el modo vigilante.

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 obtener más información, vea «Comprobar el estado de verificación de firma de la confirmación y de la etiqueta».

GitHub usará GPG automáticamente para firmar confirmaciones que realices con 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://github.com/web-flow.gpg.

Opcionalmente, puedes elegir que GitHub GPG firme las confirmaciones que realices en GitHub Codespaces. Para más Información sobre cómo habilitar la comprobación de GPG en los codespaces, consulta Administración de la comprobación de GPG para GitHub Codespaces.

Verificación de firma de confirmación GPG

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

GitHub utiliza librerías de OpenPGP para confirmar que tus confirmaciones y etiquetas firmadas localmente pueden verificarse mediante criptografía con una clave pública que hayas agregado a tu cuenta de GitHub.com.

Para firmar confirmaciones usando GPG y que esas confirmaciones sean verificadas en GitHub, sigue estos pasos:

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

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 usas una clave SSH para autenticarte con GitHub, también puedes 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 utiliza ssh_data, una biblioteca Ruby de código abierto, para confirmar que tus confirmaciones y etiquetas firmadas localmente pueden verificarse mediante criptografía con una clave pública que hayas agregado a tu cuenta de GitHub.com.

Note

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 con SSH y que esas confirmaciones sean verificadas en GitHub, sigue 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. Firma de etiquetas

Verificación de firma de confirmación S/MIME

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

En GitHub se usa el paquete ca-certificates de Debian, el mismo almacén de confianza que usan los exploradores Mozilla, para confirmar que las confirmaciones y etiquetas firmadas localmente se pueden verificar criptográficamente con una clave pública en un certificado raíz de confianza.

Note

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 usando S/MIME y que esas confirmaciones sean verificadas en GitHub, sigue estos pasos:

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

No es necesario cargar tu clave pública a GitHub.

Verificación de firma para bots

Las organizaciones y GitHub Apps que requieren de la firma de confirmación pueden usar bots para firmar las confirmaciones. Si una confirmación o etiqueta tienen una firma de bot que es criptográficamente comprobable, GitHub marca la confirmación o etiqueta como verificada.

La verificación de firma para bots solo funcionará si la solicitud se verifica y se autentica como la GitHub App o el bot y no contiene información de autor personalizada, información de persona que confirma el cambio personalizada ni información de firma personalizada, como API de confirmaciones.

Información adicional