letsencrypt external_url configurar ssl-certificate gitlab raspbian gitlab-omnibus lets-encrypt

ssl certificate - external_url - ¿Cómo uso cifremos con gitlab?



gitlab web server (6)

Empecé a buscar certificados ssl cuando tropecé con cifrar , y quería usarlo con gitlab, sin embargo, se está ejecutando en un raspberry pi 2 y funciona perfectamente ahora (así que no quiero ensuciar nada ), ¿me gustaría instalar un certificado de let scripting ssl correctamente? PD: mi instalación es ómnibus



En caso de que sea útil para cualquier otra persona, escribí el proceso que utilicé aquí: http://kelan.io/2016/using-lets-encrypt-to-add-ssl-to-gitlab/

Había configurado GitLab anterior (a través de la instalación de la fuente), e intentaba agregar SSL, usando Let''s Encrypt.

Los puntos clave son:

  • Use el modo standalone de letsencrypt
  • Haga una copia de los certs legibles por gitlab-shell

Hay 2 formas dependiendo de la configuración de su infraestructura (Raspi, servidor grande de la nube o algo intermedio):

  1. Si tiene un Servidor accesible externamente (significa que su host Gitlab es recuperable desde los servidores de Let''s Encrypt, que es necesario para el mecanismo automático de Let''s Encrypt de verificar que usted es "dueño" de cierto dominio como gitlab.yoursite.com y el servidor / host correspondiente y resuelto por DNS) lo único que se necesita (de la versión 10.7 de Gitlab) es agregar una s al http en su configuración de URL de Gitlab en /etc/gitlab/gitlab.rb (como ya se mencionó en marcolz ):

    external_url ''https://gitlab.yoursite.com''

De los documentos en https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration :

Omnibus-gitlab puede buscar y renovar automáticamente los certificados de Let''s Encrypt por usted.

  1. Si su servidor Gitlab no es accesible externamente por los servidores de Let''s Encrypt , ¡todo el proceso es mucho más difícil! A continuación, dejará la buena manera automática de dejar que Gitlab Omnibus haga el trabajo pesado por usted. ¡Definitivamente necesita obtener los certificados de Let''s Encrypt por su cuenta ahora! Hay algunas formas de obtener certificados Let''s Encrypt sin la necesidad de un servidor accesible externamente.

    El que elijo y recomendaría es utilizar el cliente alternativo Let''s Encrypt dehydrated junto con el dns-lexicon para automatizar completamente el proceso de obtención de certificados junto con el dns-challenge Let''s Encrypt, que se presentó en algún lugar en 2016 Esta es la única forma en que no necesita un servidor accesible externamente , pero nuevamente necesita "ser dueño" de cierto dominio como gitlab.yoursite.com Y necesita acceso API al proveedor de DNS, que aloja su dominio ( aquí hay una lista de proveedores de DNS compatibles en ese caso ).

    Como todo el proceso es bastante complejo, creé un libro prepare-gitlab.yml Ansible totalmente comprensible prepare-gitlab.yml donde se prepare-gitlab.yml cada paso de la instalación de Gitlab con Omnibus (las fuentes completas de GitHub están disponibles aquí: https://github.com/jonashackt/gitlab-ci-stack ).

    Si solo desea crear los certificados obtain-letsencrypt-certs-dehydrated-lexicon.yml Encrypt, eche un vistazo a obtain-letsencrypt-certs-dehydrated-lexicon.yml - incluso si no desea usar Ansible, también puede reproducir manualmente cada paso en la consola o use otra herramienta de automatización como Chef o Saltstack (aunque no puedo recomendarlo personalmente). Otra forma sería echar un vistazo a esta gran entrada de blog de los muchachos del léxico: https://blog.thesparktree.com/generating-intranet-and-private-network-ssl , de los pasos descritos de los que básicamente desarrollé el libro de jugadas.

    De cualquier manera que elija, no olvide copiar los certificados de Let''s Encrypt obtenidos de forma manual (o automática) de

    /srv/dehydrated/certs/{{ gitlab_domain }}/fullchain.pem

    a

    /etc/gitlab/ssl/{{ gitlab_domain }}.crt

    y

    /srv/dehydrated/certs/{{ gitlab_domain }}/privkey.pem

    a

    /etc/gitlab/ssl/{{ gitlab_domain }}.key

    Gitlab los recogerá automáticamente para usted, ya que los documentos indican la forma de configurar HTTPS manualmente


La mejor solución que pude encontrar por ahora se describe en esta publicación de blog . No voy a recitar todo, pero los puntos clave son:

  • Use el autenticador webroot para Let''s Encrypt
  • Cree la carpeta /var/www/letsencrypt y use este directorio como webroot-path para Let''s Encrypt
  • Cambie los siguientes valores de configuración en /etc/gitlab/gitlab.rb y ejecute gitlab-ctl reconfigure después de eso:

    nginx[''redirect_http_to_https''] = true nginx[''ssl_certificate'']= "/etc/letsencrypt/live/gitlab.yourdomain.com/fullchain.pem" nginx[''ssl_certificate_key''] = "/etc/letsencrypt/live/gitlab.yourdomain.com/privkey.pem" nginx[''custom_gitlab_server_config'']="location ^~ /.well-known {/n alias /var/www/letsencrypt/.well-known;/n}/n"

  • Si está utilizando Mattermost que se envía con el paquete Omnibus, puede configurar adicionalmente estas opciones en /etc/gitlab/gitlab.rb :

    mattermost_nginx[''redirect_http_to_https''] = true mattermost_nginx[''ssl_certificate'']= "/etc/letsencrypt/live/gitlab.yourdomain.com/fullchain.pem" mattermost_nginx[''ssl_certificate_key''] = "/etc/letsencrypt/live/gitlab.yourdomain.com/privkey.pem" mattermost_nginx[''custom_gitlab_mattermost_server_config'']="location ^~ /.well-known {/n alias /var/www/letsencrypt/.well-known;/n}/n"

  • Después de solicitar su primer certificado recuerde cambiar el external_url a https://... y nuevamente ejecute gitlab-ctl reconfigure

Este método es muy elegante, ya que solo monta el directorio /var/www/letsencrypt/.well-known utilizado por el autenticador Let''s Encrypt en la raíz web de Gitlab a través de una configuración personalizada de Nginx y la autenticación siempre es posible cuando se ejecuta Gitlab. Esto significa que puede renovar automáticamente los certificados Let''s Encrypt.



No tengo idea si la instalación es diferente en una Raspberry Pi. El proceso de instalación de Let''s Encrypt tiene algo de magia de la que no sé nada.

Preparar Gitlab

Escriba grep ''external_url'' /etc/gitlab/gitlab.rb para verificar el nombre del sitio web. Como ejemplo https: // gitlab.example.com : 50000

Si su URL externa no comienza con https , cámbiela para comenzar con https

La parte en negrita será su <your domain name>

Genera los certificados

Siga las instrucciones de instalación de Let''s Encrypt en este enlace: https://letsencrypt.org/howitworks/

No estoy copiando las instrucciones ya que pueden cambiar (ya que el programa está en beta abierta en este momento). Lo que tiene que ejecutar depende de si también tiene sitios web que se ejecutan en Apache para los que quiere generar certificados Let''s Encrypt.

Una vez que haya generado sus certificados Let''s Encrypt, se encuentran en /etc/letsencrypt/live/<your domain name>/

Copia los certificados

Gitlab espera que dos archivos se encuentren en /etc/gitlab/ssl/

Hay algo de lo que no estoy seguro, puede que tenga que convertir los certificados .pem usando la respuesta en esta ubicación: Convertir .pem a .crt y .key

Copie el certificado de /etc/letsencrypt/live/<your domain name>/cert.pem a /etc/gitlab/ssl/<your domain name>.crt

Copie la clave privada de /etc/letsencrypt/live/<your domain name>/privkey.pem a /etc/gitlab/ssl/<your domain name>.key

Reconfigurar

Ejecute la gitlab-ctl reconfigure