Как использовать let's encrypt с помощью gitlab?
Я начал искать ssl-сертификаты, когда наткнулся на давайте шифровать, и я хотел использовать его с gitlab, однако, поскольку он работает на raspberry pi 2 и работает совершенно отлично (так что я не хочу ничего испортить), он бы я пошел об установке позволяет шифровать SSL-сертификат правильно? PS: моя установка omnibus
6 ответов
есть 2 способа в зависимости от настройки инфраструктуры (Raspi, big Cloud server или что-то между ними):
-
если у вас сервер с внешним доступом (означает, что ваш хост 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 может автоматически получать и обновлять сертификаты от Давайте зашифруем для вы.
-
если ваш хост 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
tohttps://...
и снова запустить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
Я предпочитаю использовать символические ссылки, поэтому вам не нужно копировать сертификаты. Введите описание ссылки здесь