Skip to main content

Asegurar tu sitio de Páginas de GitHub con HTTPS

HTTPS agrega una capa de encriptación que evita que otros se entrometan o manipulen el tráfico en tu sitio. Puedes aplicar HTTPS en tu sitio GitHub Pages para redirigir de forma transparente todas las solicitudes de HTTP a HTTPS.

¿Quién puede utilizar esta característica?

GitHub Pages se encuentra disponible en los repositorios públicos con GitHub Free y con GitHub Free para las organizaciones, y en los repositorios públicos y privados con GitHub Pro, GitHub Team, GitHub Enterprise Cloud, y GitHub Enterprise Server. Para más información, consulta "Planes de GitHub".

Las personas con permisos de administración para un repositorio pueden aplicar HTTPS para un sitio de GitHub Pages.

Acerca de HTTPS y de las GitHub Pages

Todos los sitios GitHub Pages, incluidos los sitios que están correctamente configurados con un dominio personalizado, admiten HTTPS y la aplicación de HTTPS. Para más información sobre los dominios personalizados, consulta "Acerca de los dominios personalizados y las Páginas de GitHub" y "Solucionar problemas de dominios personalizados y Páginas de GitHub".

Los sitios GitHub Pages no se deben usar para realizar transacciones que impliquen el envío de información confidencial como contraseñas o números de tarjeta de crédito.

Advertencia: Los sitios de GitHub Pages están disponibles públicamente en Internet, incluso si el repositorio del sitio es privado. Si tienes datos confidenciales en el repositorio del sitio, tal vez te interese eliminarlos antes de publicarlo. Para obtener más información, vea «Acerca de los repositorios».

Nota: En RFC3280 se indica que la longitud máxima del nombre común debe ser de 64 caracteres. Por lo tanto, todo el nombre de dominio de tu sitio de GitHub Pages debe ser menor a 64 caracteres de longitud para que se cree un certificado exitosamente.

Aplicar HTTPS en tu sitio GitHub Pages

  1. En GitHub, navega al repositorio de tu sitio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la sección "Código y automatización" de la barra lateral, haz clic en Páginas.

  4. En "GitHub Pages," seleccione Aplicar HTTPS.

Solución de problemas para el aprovisionamiento de certificados (error de tipo "Certificado no creado aún")

Cuando configuras o cambios tu dominio personalizado en los ajustes de las Páginas, comenzará una verificación automática de DNS. Esta verificación determina si tus ajustes de DNS se configuran para permitir que GitHub obtenga un certificado automáticamente. Si la comprobación es correcta, GitHub pondrá en cola un trabajo para solicitar un certificado TLS desde Let's Encrypt. Cuando recibas un certificado válido, GitHub lo carga automáticamente a los servidores que manejan la terminación de TLS para las Páginas. Cuando este proceso se complete con éxito, se mostrará una marca de verificación al costado de tu nombre de dominio personalizado.

Ten en cuenta que el sitio de GitHub Pages debe estar disponible públicamente para que se emita un certificado Let's Encrypt. Una vez emitido el certificado, puedes revertir el sitio a privado.

El proceso podría tomar algo de tiempo. Si el proceso no se ha completado varios minutos después de hacer clic en Guardar, intente hacer clic en Quitar junto al nombre de dominio personalizado. Vuelva a escribir el nombre de dominio y haga clic en Guardar de nuevo. Esto cancelará y volverá a iniciar el proceso de aprovisionamiento.

Resolver problemas con contenido mixto

Si habilita HTTPS para el sitio de GitHub Pages, pero en el código HTML del sitio todavía se hace referencia a imágenes, CSS o JavaScript mediante HTTP, significa que el sitio ofrece contenido mixto. Ofrecer contenido mixto puede hacer que tu sitio sea menos seguro y generar problemas al cargar activos.

Para eliminar el contenido mixto del sitio, asegúrese de que todos los recursos se ofrezcan mediante HTTPS; para ello, cambie http:// por https:// en el código HTML del sitio.

Normalmente, los activos se encuentran en las siguientes ubicaciones:

  • Si en el sitio se usa Jekyll, es probable que los archivos HTML se encuentren en la carpeta layouts.
  • CSS se encuentra normalmente en la sección <head> del archivo HTML.
  • JavaScript normalmente se encuentra en la sección <head> o justo antes de la etiqueta </body> de cierre.
  • Las imágenes normalmente se encuentran en la sección <body>.

Sugerencia: Si no puede encontrar los recursos en los archivos de código fuente del sitio, intente buscar http en el editor de texto o en GitHub.

Ejemplos de activos referenciados en un archivo HTML

Tipo de recursoHTTPHTTPS
CSS<link rel="stylesheet" href="http://example.com/css/main.css"><link rel="stylesheet" href="https://example.com/css/main.css">
JavaScript<script type="text/javascript" src="http://example.com/js/main.js"></script><script type="text/javascript" src="https://example.com/js/main.js"></script>
Imagen<a href="http://www.somesite.com"><img src="http://www.example.com/logo.jpg" alt="Logo"></a><a href="https://www.somesite.com"><img src="https://www.example.com/logo.jpg" alt="Logo"></a>

Verificación de la configuración de DNS

En algunos casos, no se podrá generar un certificado HTTPS debido a la configuración DNS del dominio personalizado. Esto puede deberse a registros DNS adicionales o registros que no apuntan a las direcciones IP de GitHub Pages.

Para garantizar que un certificado HTTPS se genere correctamente, se recomiendan las siguientes configuraciones. Cualquier registro adicional A, AAAA, ALIAS o ANAME con el host @ o registros CNAME que apunten al subdominio de www u otro subdominio personalizado que quieras usar con GitHub Pages pueden impedir que el certificado HTTPS se genere.

EscenarioTipo de registros DNSNombre del registro DNSValores del registro DNS
Dominio de Apex
(example.com)
A@185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Dominio de Apex
(example.com)
AAAA@2606:50c0:8000::153
2606:50c0:8001::153
2606:50c0:8002::153
2606:50c0:8003::153
Dominio de Apex
(example.com)
ALIAS o ANAME@USERNAME.github.io o
ORGANIZATION.github.io
Subdominio
(www.example.com,
blog.example.com)
CNAMESUBDOMAIN.example.com.USERNAME.github.io o
ORGANIZATION.github.io