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
Necesita instalar los certificados generados manualmente en / etc / gitlab / ssl y establecer la URL externa en https en /etc/gitlab/gitlab.rb como se describe en: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md
Prefiero usar enlaces simbólicos, por lo que no necesita copiar los certificados. ingrese la descripción del enlace aquí
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
deletsencrypt
- 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):
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.
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 comogitlab.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 comowebroot-path
para Let''s Encrypt Cambie los siguientes valores de configuración en
/etc/gitlab/gitlab.rb
y ejecutegitlab-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
ahttps://...
y nuevamente ejecutegitlab-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.
Necesita instalar los certificados generados manualmente en /etc/gitlab/ssl
y establecer la URL externa en https en /etc/gitlab/gitlab.rb
como se describe en: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md
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