Amazon Linux에 설치된 GitLab CE에 Let's Encrypt를 적용하는 방법

Amazon Linux에 설치된 GitLab CE에 Let's Encrypt를 적용하는 방법

2022-10-04 last update

7 minutes reading letsencrypt GitLab AmazonLinux AWS

대상 환경



GitLab Community Edition 9.0.4
certbot 0.13.0(Let's Encrypt의 CLI 클라이언트)

원리



Let's Encrypt의 "webroot"모드를 이용한다.
webroot 모드는 서버에 .well-known 디렉토리가 놓여 있다는 것을 인증 기준으로서 SSL 증명서를 발행한다.
GitLab 로그인을 피하고 Let.s Encrypt에 .well-known를 발견하고 SSL 인증서를 발행하는 것이이 기사의 목적입니다.

절차



※ GitLab은 인스톨이 완료되어 있어 이미 가동하고 있는 것으로 한다.

1. GitLab에서 사용하는 Nginx 설정 변경



GitLab 로그인을 피하고 .well-known의 존재를 확인하기 위해 Nginx 리디렉션 설정을 변경하십시오.
우선은 설정 파일을 신규 작성.
$ sudo vim /etc/gitlab/custom_gitlab_server_config.conf

/etc/gitlab/custom_gitlab_server_config.conf
location ^~ /.well-known {
    alias /var/letsencrypt/.well-known;
}

그 후, 설정 파일을 적용.
$ sudo vim /etc/gitlab/gitlab.rb

/etc/gitlab/gitlab.rb
nginx['custom_gitlab_server_config'] = "include /etc/gitlab/custom_gitlab_server_config.conf;"

마지막으로, Let's Encrypt가 발견하게 하기 위한 디렉토리를 작성해 둔다..well-known 는 작성하지 않아도 된다.
$ sudo mkdir /var/letsencrypt

2. GitLab에 설정을 적용하고 재부팅


$ sudo mkdir /var/letsencrypt

3. Let's Encrypt 설치



절대로 마지막 --debug 를 잊지 않도록.
Amazon Linux 한정의 수법이므로 다른 OS의 경우는 불필요.
$ sudo mkdir /usr/local/letsencrypt
$ sudo chown `whoami` /usr/local/letsencrypt
$ cd /usr/local/letsencrypt
$ git clone https://github.com/letsencrypt/letsencrypt .
$ sudo ./letsencrypt-auto --debug

4. SSL 인증서 취득


[gitlab.example.com] 부분은 GitLab에 적용되는 도메인을 지정한다.
$ sudo ./letsencrypt-auto certonly --webroot --webroot-path /var/letsencrypt -d [gitlab.example.com]

오류가 발생하면



에러의 경우는 이런 표시가 나온다.
IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: gitlab.example.com
   Type:   unauthorized
   Detail: Invalid response from

Type이 unauthorized이면
  • 로그인을 피할 수 없으므로 1 단계가 올바르게 완료되었는지 확인하십시오.

    Type이 unconnected인 경우
  • AWS 보안 그룹을 확인하고 80 번 및 443 번 포트를 엽니 다
  • 기세 너무 /etc/gitlab/gitlab.rbexternal_url 를 https로 하고 있는지 확인한다 (증명서 취득까지 금지!)

    5. SSL 인증서가 자동으로 업데이트되도록 설정


    $ sudo crontab -u root -e
    
    00 05 01 * * /path/to/letsencrypt/letsencrypt-auto renew --force-renew && gitlab-ctl restart
    

    5. SSL 인증서를 GitLab에 적용


    external_url를 HTTPS로 변경합니다.[gitlab.example.com] 부분은 GitLab에 적용되는 도메인을 지정한다.
    redirect_http_to_https를 true로 설정하면 HTTP로 액세스하더라도 HTTPS로 리디렉션됩니다.
    증명서의 재발행시에는 HTTP에 의한 .well-known 의 확인이 달리지 않기 때문에, HTTP 접속을 파괴해 버릴 수 있다.
    마찬가지로 AWS의 보안 그룹 레벨에서도 80번 포트를 망쳐버릴 수 있다.
    $ sudo vim /etc/gitlab/gitlab.rb
    

    /etc/gitlab/gitlab.rb
    nginx['external_url']                = "https://[gitlab.example.com]"
    nginx['redirect_http_to_https']      = true
    nginx['ssl_certificate']             = "/etc/letsencrypt/live/[gitlab.example.com]/fullchain.pem"
    nginx['ssl_certificate_key']         = "/etc/letsencrypt/live/[gitlab.example.com]/privkey.pem"
    

    6. GitLab 재부팅


    $ sudo gitlab-ctl reconfigure
    

    참고문헌



    GitLab Omnibus package의 SSL 인증서를 Let's Encrypt로 가져옵니다.
    ぃ tp // 코 m / 유안 / ms / 09 A 434d3f6c 31101

    액세스 제한이 걸린 GitLab을 Let's Encrypt를 사용하여 https화
    htps : // 기 st. 기주 b. 코m/마메모몬가/아36아194f8아80세5후49bf950에092c604