Skip to main content

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

Con GPG, SSH, o S/MIME, puedes firmar etiquetas y confirmaciones localmente. 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. GitHub muestra confirmaciones firmadas con dicha clave como "Verificada", a menos que la clave se haya marcado como en peligro. Las claves SSH no tienen esta capacidad.

Las confirmaciones y etiquetas tienen los siguientes estados de comprobación, en función de si ha habilitado el modo de vigilancia. 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ó.

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 obtener más información, vea «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 obtener más información, vea «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.

Nota: La comprobació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.

Nota: La comprobació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