Acerca de la Seguridad de la capa de transporte
El TLS, que reemplazó al SSL, se habilita y configura con un certificado autofirmado cuando se inicia el GitHub Enterprise Server por primera vez. Como los certificados autofirmados no son confiables para los navegadores web y los clientes de Git, estos clientes informarán advertencias de certificados hasta que inhabilites TLS o cargues un certificado firmado por una entidad confiable, como Let's Encrypt.
El aparato GitHub Enterprise Server enviará encabezados de Seguridad de transporte estricta de HTTP mientras SSL esté habilitado. Inhabilitar TLS hará que los usuarios pierdan acceso al aparato, porque sus navegadores no permitirán que un protocolo se degrade a HTTP. Para obtener más información, consulta HTTP Strict Transport Security (HSTS) en Wikipedia.
Warning
Cuando se termina una conexión HTTPS en un equilibrador de carga, en las solicitudes de este hacia GitHub Enterprise Server también es necesario usar HTTPS. Bajar la conexión de categoría a HTTP no es compatible.
Para permitir que los usuarios usen FIDO U2F para la autenticación en dos fases o implementen sitios de GitHub Pages con GitHub Actions, debes habilitar TLS para la instancia. Para más información, consulta Configurar la autenticación de dos factores.
Requisitos previos
Para utilizar TLS en la producción, debes tener un certificado en un formato de PEM no cifrado firmado por una entidad de certificación confiable. Para usar un certificado firmado por una entidad de certificación interna, debes instalar el certificado raíz y los certificados intermedios. Para más información, consulta Solución de errores de TLS.
El certificado también necesitará tener configurados Nombres alternativos del firmante para los subdominios enumerados en Habilitar el aislamiento de subdominio e incluir la cadena de certificados completa si la ha firmado una entidad de certificación intermedia. Para obtener más información, consulta Nombre alternativo del firmante en Wikipedia.
Puede generar una solicitud de firma de certificado (CSR) para la instancia mediante el comando ghe-ssl-generate-csr
. Para más información, consulta Utilidades de la ea de comandos.
La clave debe ser una clave RSA y no debe tener ninguna frase de contraseña. Para más información, consulta Solución de errores de TLS.
Cargar un certificado TLS personalizado
Warning
La configuración de TLS provoca una pequeña cantidad de tiempo de inactividad en tu instancia de GitHub Enterprise Server.
-
Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .
-
Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.
-
En la barra lateral " Administrador del sitio", haz clic en Consola de administración .
-
En la barra lateral "Configuración", haga clic en Privacidad y desactive Modo de privacidad.
-
Seleccione TLS only (recommended) .
-
En "TLS Protocol support" (Asistencia de protocolo TLS), selecciona los protocolos que quieres permitir.
-
En "Certificate", haga clic en Choose File, luego elija el certificado TLS o la cadena de certificación (en formato PEM) que quiera instalar. Este archivo suele tener la extensión .pem, .crt o .cer .
-
En "Unencrypted key", haga clic en Choose File, luego elija la clave RSA (en formato PEM) que desea instalar. Este archivo suele tener la extensión .key .
-
En la barra lateral "Configuración" , haga clic en Guardar configuración.
Note
Al guardar la configuración en Consola de administración se restablecen los servicios del sistema, lo que podría generar un tiempo de inactividad visible para el usuario.
-
Espera que se complete la fase de configuración.
Acerca de la asistencia de Let's Encrypt
Let's Encrypt es una entidad de certificación pública que emite certificados TLS gratuitos y automáticos que son confiables para los navegadores que usan el protocolo ACME. De hecho, puedes obtener y renovar los certificados de Let's Encrypt para tu aparato sin la necesidad de realizar ningún mantenimiento manual.
Para utilizar la automatización de Let's Encrypt, tu aplicativo debe configurarse con un nombre de host al que se pueda acceder públicamente mediante HTTP. También se le debe permitir al aplicativo realizar conexiones HTTPS salientes.
Cuando habilites la automatización de la administración de certificados TLS con Let's Encrypt, tu instancia de GitHub Enterprise Server se pondrá en contacto con los servidores de Let's Encrypt para obtener un certificado. Para renovar un certificado, los servidores de Let's Encrypt deben validar el control del nombre de dominio configurado con las solicitudes HTTP entrantes.
También puedes usar la utilidad ghe-ssl-acme
de la línea de comandos en tu instancia de GitHub Enterprise Server para generar automáticamente un certificado de Let's Encrypt. Para más información, consulta Utilidades de la ea de comandos.
Configurar TLS usando Let's Encrypt
Para utilizar la automatización de Let's Encrypt, tu aplicativo debe configurarse con un nombre de host al que se pueda acceder públicamente mediante HTTP. También se le debe permitir al aplicativo realizar conexiones HTTPS salientes.
Warning
La configuración de TLS provoca una pequeña cantidad de tiempo de inactividad en tu instancia de GitHub Enterprise Server.
-
Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .
-
Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.
-
En la barra lateral " Administrador del sitio", haz clic en Consola de administración .
-
En la barra lateral "Configuración", haga clic en Privacidad y desactive Modo de privacidad.
-
Seleccione TLS only (recommended) .
-
Seleccione Enable automation of TLS certificate management using Let's Encrypt.
-
En la barra lateral "Configuración" , haga clic en Guardar configuración.
Note
Al guardar la configuración en Consola de administración se restablecen los servicios del sistema, lo que podría generar un tiempo de inactividad visible para el usuario.
-
Espera que se complete la fase de configuración.
-
En la barra lateral "Configuración", haga clic en Privacidad y desactive Modo de privacidad.
-
Haga clic en Request TLS certificate.
-
Espera para que el "Estado" cambie de "INICIADO" a "HECHO".
-
Haga clic en Guardar configuración.
Solución de problemas de TLS con Let's Encrypt
Puedes solucionar problemas que afectan al certificado TLS de Let's Encrypt.
Error: "Un error de seguridad evitó que el recurso se cargase"
En algunos casos, los usuarios finales pueden notificar que las páginas de los servicios de tu instancia de GitHub Enterprise Server responden con el siguiente error en las herramientas de desarrollo de un browser.
Security error prevented the resource from being loaded
Para resolver estos errores, debes actualizar los nombres alternativos del firmante (SAN) del certificado Let's Encrypt mediante la reemisión del certificado. La sustitución del certificado de una instancia requiere tiempo de inactividad orientado al usuario.
-
Comunica el próximo tiempo de inactividad a los usuarios y considera la posibilidad de habilitar el modo de mantenimiento. Para obtener más información, consulte los siguientes artículos.
- Personalizar los mensajes de usuario para tu empresa
- Habilitar y programar el modo de mantenimiento 1. SSH en tu instancia de GitHub Enterprise Server Si la instancia consta de varios nodos, por ejemplo, si la alta disponibilidad o la replicación geográfica están configuradas, utiliza SSH en el nodo principal. Si usas un clúster, puedes utilizar SSH en cualquier nodo. Reemplace HOSTNAME por el nombre de host de la instancia, o el nombre de host o la dirección IP de un nodo. Para obtener más información, vea «Acceder al shell administrativo (SSH)».
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
Para deshabilitar Let's Encrypt, ejecuta el siguiente comando.
Shell ghe-ssl-acme -d
ghe-ssl-acme -d
-
Para borrar la configuración existente de Let's Encrypt, ejecute el siguiente comando.
Shell ghe-ssl-acme -x
ghe-ssl-acme -x
-
Para solicitar e instalar un nuevo certificado de Let's Encrypt, ejecute el siguiente comando.
Shell ghe-ssl-acme -e
ghe-ssl-acme -e
-
Para aplicar la configuración, ejecuta el siguiente comando.
Note
Durante la ejecución de una configuración, los servicios de tu instancia de GitHub Enterprise Server pueden reiniciarse, y esto puede provocar un breve tiempo de inactividad para los usuarios.
Shell ghe-config-apply
ghe-config-apply
-
Espera que se complete la fase de configuración.
-
Si configuraste un mensaje de usuario o un modo de mantenimiento, quita el mensaje y deshabilita el modo de mantenimiento.