GitLab에서 Let's Encrypt 사용

9741 단어 letsencryptGitLab

소개



온프레미스 Git 서버를 만들기 위해 GitLab이 자주 사용됩니다. GitLab에 대한 웹사이트 통신을 SSL로 보호하기 위해 Let's Encrypt 인증서를 사용합니다.
GitLab v10.7부터는 Let's Encrypt와의 연계가 강화된 것 같아서 시험해 보았습니다.

설정



htps : // 기트 b. 이 m/기 tぁb-오 rg/오메니부 s-기 tぁb/bぉb/마s r/도 c/세친 gs/ㅇsl. md # ぇ ts - 엔 crypt - 니 라치온
를 참고로 설정을 합시다.

그렇다고해도 매우 간단하고 gitlab.rb 에 다음 설정을 추가하면됩니다!

gitlab.rb
letsencrypt['enable'] = true                      # GitLab 10.5 and 10.6 require this option
external_url "https://gitlab.example.com"     # Must use https protocol
letsencrypt['contact_emails'] = ['[email protected]'] # Optional

Let's Encrypt의 챌린지에 응답하기 위해 다음 설정을 추가합시다 1

gitlab.rb
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
gitlab-ctl reconfigure 그러면 Let's Encrypt 인증서가 설정되어야합니다

Ansible Role 사용



GitLab 구축을 단순화하기 위해 완성 된 Ansible Role을 사용할 수 있습니다.
htps : // 기주 b. 코 m / 게 r ぃ んぐ y / 안시 b

이 Playbook을 사용하는 경우 가장 간단한 구성은 다음과 같을 것입니다.
├── main.yml
├── inventory
│   └── hosts.ini
├── roles
│   ├── geerlingguy.gitlab
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   └── gitlab.rb.j2
│   │   ├── tests
│   │   │   ├── README.md
│   │   │   ├── test-version.yml
│   │   │   ├── test.sh
│   │   │   └── test.yml
│   │   └── vars
│   │       ├── Debian.yml
│   │       └── RedHat.yml
├── templates
│   └── mygitlab.rb.j2
└── vars
    └── main.yml

일부 설정은 적절한 var를 선언하면 다시 작성할 수 있습니다.

vars/main.yml
gitlab_config_template: mygitlab.rb.j2
gitlab_external_url: https://gitlab.example.com/
# gitlab_create_self_signed_cert: "true"
gitlab_redirect_http_to_https: "true"
gitlab_email_enabled: "true"
gitlab_email_from: "[email protected]"
gitlab_email_display_name: "GitLab Admin"
gitlab_email_reply_to: "[email protected]"

Let's Encrypt 주변 설정은 gitlab.rb.j2를 다시 작성해야 합니다.

templates/mygitlab.rb.j2
# The URL through which GitLab will be accessed.
external_url "{{ gitlab_external_url }}"

# gitlab.yml configuration
gitlab_rails['time_zone'] = "{{ gitlab_time_zone }}"
gitlab_rails['backup_keep_time'] = {{ gitlab_backup_keep_time }}
gitlab_rails['gitlab_email_enabled'] = {{ gitlab_email_enabled }}
{% if gitlab_email_enabled == "true" %}
gitlab_rails['gitlab_email_from'] = "{{ gitlab_email_from }}"
gitlab_rails['gitlab_email_display_name'] = "{{ gitlab_email_display_name }}"
gitlab_rails['gitlab_email_reply_to'] = "{{ gitlab_email_reply_to }}"
{% endif %}

# Default Theme
gitlab_rails['gitlab_default_theme'] = "{{ gitlab_default_theme }}"

# Whether to redirect http to https.
nginx['redirect_http_to_https'] = {{ gitlab_redirect_http_to_https }}
- nginx['ssl_certificate'] = "{{ gitlab_ssl_certificate }}"
+ # nginx['ssl_certificate'] = "{{ gitlab_ssl_certificate }}"
- # nginx['ssl_certificate_key'] = "{{ gitlab_ssl_certificate_key }}"
+ # nginx['ssl_certificate_key'] = "{{ gitlab_ssl_certificate_key }}"

# The directory where Git repositories will be stored.
git_data_dirs({"default" => {"path" => "{{ gitlab_git_data_dir }}"} })

# The directory where Gitlab backups will be stored
gitlab_rails['backup_path'] = "{{ gitlab_backup_path }}"

# These settings are documented in more detail at
# https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example#L118
gitlab_rails['ldap_enabled'] = {{ gitlab_ldap_enabled }}
gitlab_rails['ldap_host'] = '{{ gitlab_ldap_host }}'
gitlab_rails['ldap_port'] = {{ gitlab_ldap_port }}
gitlab_rails['ldap_uid'] = '{{ gitlab_ldap_uid }}'
gitlab_rails['ldap_method'] = '{{ gitlab_ldap_method}}' # 'ssl' or 'plain'
gitlab_rails['ldap_bind_dn'] = '{{ gitlab_ldap_bind_dn }}'
gitlab_rails['ldap_password'] = '{{ gitlab_ldap_password }}'
gitlab_rails['ldap_allow_username_or_email_login'] = true
gitlab_rails['ldap_base'] = '{{ gitlab_ldap_base }}'

# GitLab Nginx
## See https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md
{% if gitlab_nginx_listen_port is defined %}
nginx['listen_port'] = "{{ gitlab_nginx_listen_port }}"
{% endif %}
{% if gitlab_nginx_listen_https is defined %}
nginx['listen_https'] = {{ gitlab_nginx_listen_https }}
{% endif %}

# Use smtp instead of sendmail/postfix
# More details and example configuration at
# https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md
gitlab_rails['smtp_enable'] = {{ gitlab_smtp_enable }}
gitlab_rails['smtp_address'] = '{{ gitlab_smtp_address }}'
gitlab_rails['smtp_port'] = {{ gitlab_smtp_port }}
gitlab_rails['smtp_user_name'] = '{{ gitlab_smtp_user_name }}'
gitlab_rails['smtp_password'] = '{{ gitlab_smtp_password }}'
gitlab_rails['smtp_domain'] = '{{ gitlab_smtp_domain }}'
gitlab_rails['smtp_authentication'] = '{{ gitlab_smtp_authentication }}'
gitlab_rails['smtp_enable_starttls_auto'] = {{ gitlab_smtp_enable_starttls_auto }}
gitlab_rails['smtp_tls'] = {{ gitlab_smtp_tls }}
gitlab_rails['smtp_openssl_verify_mode'] = '{{ gitlab_smtp_openssl_verify_mode }}'
gitlab_rails['smtp_ca_path'] = '{{ gitlab_smtp_ca_path }}'
gitlab_rails['smtp_ca_file'] = '{{ gitlab_smtp_ca_file }}'

# 2-way SSL Client Authentication.
{% if gitlab_nginx_ssl_verify_client %}
nginx['ssl_verify_client'] = "{{ gitlab_nginx_ssl_verify_client }}"
{% endif %}
{% if gitlab_nginx_ssl_client_certificate %}
nginx['ssl_client_certificate'] = "{{ gitlab_nginx_ssl_client_certificate }}"
{% endif %}

# To change other settings, see:
# https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#changing-gitlab-yml-settings

+ letsencrypt['enable'] = true
+ nginx['redirect_http_to_https_port'] = 80

Playbook을 실행하면 GitLab이 설치되고 Let's Encrypt 인증서도 설정됩니다!



htps : // 기트 b. 코 m/기 tぁb-오 rg/기 tぁb-세/이스에 s/43719 

좋은 웹페이지 즐겨찾기