Skip to main content

Configuring TLS

You can configure Transport Layer Security (TLS) on tu instancia de GitHub Enterprise Server so that you can use a certificate that is signed by a trusted certificate authority.

About Transport Layer Security

TLS, which replaced SSL, is enabled and configured with a self-signed certificate when GitHub Enterprise Server is started for the first time. As self-signed certificates are not trusted by web browsers and Git clients, these clients will report certificate warnings until you disable TLS or upload a certificate signed by a trusted authority, such as Let's Encrypt.

The GitHub Enterprise Server appliance will send HTTP Strict Transport Security headers when SSL is enabled. Disabling TLS will cause users to lose access to the appliance, because their browsers will not allow a protocol downgrade to HTTP. For more information, see "HTTP Strict Transport Security (HSTS)" on Wikipedia.

Advertencia: 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.

To allow users to use FIDO U2F for two-factor authentication, you must enable TLS for your instance. For more information, see "Configurar la autenticación de dos factores."

Prerequisites

To use TLS in production, you must have a certificate in an unencrypted PEM format signed by a trusted certificate authority. To use a certificate signed by an internal certificate authority, you must install the root certificate and any intermediate certificates. For more information, see "Troubleshooting TLS errors."

Your certificate will also need Subject Alternative Names configured for the subdomains listed in "Enabling subdomain isolation" and will need to include the full certificate chain if it has been signed by an intermediate certificate authority. For more information, see "Subject Alternative Name" on Wikipedia.

You can generate a certificate signing request (CSR) for your instance using the ghe-ssl-generate-csr command. For more information, see "Utilidades de la ea de comandos."

Your key must be an RSA key and must not have a passphrase. For more information, see "Troubleshooting TLS errors".

Uploading a custom TLS certificate

Advertencia: La configuración de TLS provoca una pequeña cantidad de tiempo de inactividad para tu instancia de GitHub Enterprise Server.

  1. Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .

  2. Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.

  3. En la barra lateral " Administrador del sitio", haz clic en Consola de administración .

  4. En la barra lateral "Configuración", haga clic en Privacidad.

  5. Seleccione TLS only (recommended) .

  6. Under "TLS Protocol support", select the protocols you want to allow.

  7. Under "Certificate", click Choose File, then choose a TLS certificate or certificate chain (in PEM format) to install. This file will usually have a .pem, .crt, or .cer extension.

  8. Under "Unencrypted key", click Choose File, then choose an RSA key (in PEM format) to install. This file will usually have a .key extension.

  9. En la barra lateral "Configuración" , haga clic en Guardar configuración.

    Nota: Al guardar la configuración en la Consola de administración se restablecen los servicios de sistema, lo que podría generar un tiempo de inactividad visible para el usuario.

  10. Espera que se complete la fase de configuración.

About Let's Encrypt support

Let's Encrypt is a public certificate authority that issues free, automated TLS certificates that are trusted by browsers using the ACME protocol. You can automatically obtain and renew Let's Encrypt certificates on your appliance without any required manual maintenance.

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.

When you enable automation of TLS certificate management using Let's Encrypt, tu instancia de GitHub Enterprise Server will contact the Let's Encrypt servers to obtain a certificate. To renew a certificate, Let's Encrypt servers must validate control of the configured domain name with inbound HTTP requests.

You can also use the ghe-ssl-acme command line utility on tu instancia de GitHub Enterprise Server to automatically generate a Let's Encrypt certificate. For more information, see "Utilidades de la ea de comandos."

Configuring TLS using 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.

Advertencia: La configuración de TLS provoca una pequeña cantidad de tiempo de inactividad para tu instancia de GitHub Enterprise Server.

  1. Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .

  2. Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.

  3. En la barra lateral " Administrador del sitio", haz clic en Consola de administración .

  4. En la barra lateral "Configuración", haga clic en Privacidad.

  5. Seleccione TLS only (recommended) .

  6. Select Enable automation of TLS certificate management using Let's Encrypt.

  7. En la barra lateral "Configuración" , haga clic en Guardar configuración.

    Nota: Al guardar la configuración en la Consola de administración se restablecen los servicios de sistema, lo que podría generar un tiempo de inactividad visible para el usuario.

  8. Espera que se complete la fase de configuración.

  9. En la barra lateral "Configuración", haga clic en Privacidad.

  10. Click Request TLS certificate.

  11. Wait for the "Status" to change from "STARTED" to "DONE".

    Screenshot of the "Requesting TLS Certificate" dialog. At the top of the dialog, "STATUS: DONE" is highlighted with an orange outline.

  12. Click Save configuration.

Troubleshooting TLS with Let's Encrypt

You can troubleshoot issues that affect your TLS certificate from Let's Encrypt.

Error: "Security error prevented the resource from being loaded"

In some cases, end users may report that pages for services on tu instancia de GitHub Enterprise Server respond with the following error in a browser's developer tools.

Security error prevented the resource from being loaded

To resolve these errors, you must update the Subject Alternative Names (SANs) your Let's Encrypt certificate by reissuing the certificate. Replacement of an instance's certificate requires user-facing downtime.

  1. Communicate the upcoming downtime to your users, and consider enabling maintenance mode. For more information, see the following articles.

  2. 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
    
  3. To disable Let's Encrypt, run the following command.

    Shell
    ghe-ssl-acme -d
    
  4. To clear the existing settings for Let's Encrypt, run the following command.

    Shell
    ghe-ssl-acme -x
    
  5. To request and install a new certificate from Let's Encrypt, run the following command.

    Shell
    ghe-ssl-acme -e
    
  6. Para aplicar la configuración, ejecuta el siguiente comando.

    Nota: 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
    
  7. Espera que se complete la fase de configuración.

  8. If you configured a user message or maintenance mode, remove the message and disable maintenance mode.