Как использовать let's encrypt с помощью gitlab?

Я начал искать ssl-сертификаты, когда наткнулся на давайте шифровать, и я хотел использовать его с gitlab, однако, поскольку он работает на raspberry pi 2 и работает совершенно отлично (так что я не хочу ничего испортить), он бы я пошел об установке позволяет шифровать SSL-сертификат правильно? PS: моя установка omnibus

6 ответов


есть 2 способа в зависимости от настройки инфраструктуры (Raspi, big Cloud server или что-то между ними):

  1. если у вас сервер с внешним доступом (означает, что ваш хост Gitlab вызывается с серверов Lets Encrypt, что необходимо для шифрования автоматического механизма проверки того, что вы "владеете" определенным доменом, таким как gitlab.yoursite.com и соответствующий и DNS разрешенный сервер / хост)единственное, что нужно (от GitLab версии 10.7 on), чтобы добавить s до адресу http в вашей конфигурации URL GitLab в /etc/gitlab/gitlab.rb (as marcolz уже упомянутых):

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

из документов в https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration:

Omnibus-gitlab может автоматически получать и обновлять сертификаты от Давайте зашифруем для вы.

  1. если ваш хост Gitlab не доступен извне Lets Encrypt servers, весь процесс намного сложнее! Затем вы оставите хороший автоматический способ позволить Омнибусу Gitlab сделать тяжелый подъем для вас. вам определенно нужно получить позволяет шифровать сертификаты самостоятельно сейчас! есть несколько способов получить позволяет шифровать сертификаты без необходимости внешнего доступа сервер.

    тот, который я выбираю и рекомендовал бы использовать альтернативу, позволяет шифровать клиент обезвоженная вместе с dns-лексикон чтобы полностью автоматизировать процесс получения сертификатов вместе с Lets Encrypt dns-challenge, который был введен где-то в 2016 году. Это единственный путь, где ты не нужен внешне доступный сервер - но вам снова нужно "владеть" определенным доменом, как gitlab.yoursite.com и вам нужен доступ API к DNS-провайдеру, на котором размещен ваш домен (heres a список поддерживаемых DNS-провайдеров в этом случае).

    поскольку весь процесс довольно сложный, я создал полностью понятный Анзибль playbook подготовка-gitlab.в формате YML где каждый шаг установки Gitlab с Omnibus обрабатывается для вас (полные источники GitHub доступны здесь: https://github.com/jonashackt/gitlab-ci-stack).

    если вы хотите только создать сертификаты шифрования Lets, посмотрите на получить-letsencrypt-certs-обезвоженный-лексикон.в формате YML - даже если вы не хотите использовать Ansible, вы также можете вручную воспроизвести каждый шаг на консоли или использовать другой инструмент автоматизации, такой как Chef или Saltstack (хотя я не могу рекомендовать это лично). Другим способом было бы взглянуть на этот отличный blogpost из лексикон ребят:https://blog.thesparktree.com/generating-intranet-and-private-network-ssl, из тех описанных шагов, из которых я в основном разработал playbook.

    в любом случае вы выбираете, не забудьте скопировать вручную (или автоматически) извлечена позволяет шифровать сертификаты

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

    to

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

    и

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

    в

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

    Gitlab заберет их оттуда автоматически для вас, как указано вспособ ручной настройки HTTPS


на сегодняшний день лучшее решение, которое я смог найти-это описано в этот блог. Я не буду перечислять все, но ключевые моменты:

  • использовать webroot Аутентификатор для шифрования
  • создать папку /var/www/letsencrypt и использовать этот каталог как webroot-path для шифрования
  • измените следующие значения конфигурации в /etc/gitlab/gitlab.rb и работать gitlab-ctl reconfigure после этого:

    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"
    
  • если вы используйте Mattermost, который поставляется с пакетом Omnibus, тогда вы можете дополнительно установить эти параметры в /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"
    
  • после запроса вашего первого сертификата не забудьте изменить external_url to https://... и снова запустить gitlab-ctl reconfigure

этот метод очень элегантный, так как он просто монтирует каталог /var/www/letsencrypt/.well-known используется let's Encrypt authenticator в веб-корень Gitlab через пользовательскую конфигурацию Nginx и аутентификация всегда возможна, когда работает Gitlab. Это означает, что вы можете автоматически обновлять сертификаты Let's Encrypt.


Я понятия не имею, отличается ли установка на Raspberry Pi. Давайте зашифруем процесс установки делает какую-то магию, о которой я ничего не знаю.

Подготовить Gitlab

тип grep 'external_url' /etc/gitlab/gitlab.rb чтобы проверить имя сайта. В качестве примера https://gitlab.example.com:50000

если ваш внешний URL-адрес не начинается с https, изменить его, чтобы начать с https

часть жирным шрифтом будет ваш <your domain name>

генерировать сертификаты

следуйте инструкциям по установке Let's Encrypt по этой ссылке:https://letsencrypt.org/howitworks/

Я не копирую инструкции, так как они могут измениться (так как программа находится в открытой бета-версии прямо сейчас). То, что вам нужно запустить, зависит от того, есть ли у вас веб-сайты, работающие на Apache, для которых вы хотите создать Let's Encrypt certs.

после того, как вы создали свой Давайте шифровать сертификаты, они расположены в /etc/letsencrypt/live/<your domain name>/

скопировать сертификаты

Gitlab ожидает два файла, расположенных в /etc/gitlab/ssl/

что-то я не уверен, возможно, вам придется конвертировать .сертификаты pem, использующие ответ в этом месте:преобразовать .Пэм то .crt и .ключ

скопировать сертификат из /etc/letsencrypt/live/<your domain name>/cert.pem to /etc/gitlab/ssl/<your domain name>.crt

скопировать закрытый ключ из /etc/letsencrypt/live/<your domain name>/privkey.pem в /etc/gitlab/ssl/<your domain name>.key

переконфигурировать

Run gitlab-ctl reconfigure


вам необходимо установить сгенерированные сертификаты вручную в /etc/gitlab/ssl и установите внешний url-адрес https в /etc/gitlab/gitlab.rb как описано в: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md


в случае, если это полезно для кого-то еще, я написал процесс, который я использовал здесь:http://kelan.io/2016/using-lets-encrypt-to-add-ssl-to-gitlab/

Я настроил GitLab ранее (через install from source) и просто пытался добавить SSL, используя Let's Encrypt.

ключевые требования:

  • использовать standalone режим letsencrypt
  • сделайте копию сертификатов читаемой gitlab-shell

вам необходимо установить сгенерированные сертификаты вручную в /etc /gitlab/ssl и установить внешний url-адрес https в/etc / gitlab / gitlab.rb, как описано в: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md

Я предпочитаю использовать символические ссылки, поэтому вам не нужно копировать сертификаты. Введите описание ссылки здесь