소프트웨어 개발과 협업을 위한 가장 중요한 도구 중 하나는 버전 관리 시스템(VCS)입니다. GitLab은 많은 팀과 개발자들이 프로젝트를 관리하고 협업하는 데 사용하는 플랫폼 중 하나입니다. 프로젝트 규모가 커지면 종종 GitLab을 직접 설치하여 자체적으로 서버를 구축해야 할 필요가 있습니다. 이 블로그 포스팅에서는 GitLab 서버를 구축하고, 보안을 강화하기 위해 TLS를 적용하는 방법에 대해 자세히 알아보겠습니다.
Domain과 인증서가 있어야 합니다.
방법 1. AWS의 Route53 이용 및 LetsEncrypt 사용하여 인증서 만들기
방법 2. 자체 DNS 서버 구축 및 사설 인증서 만들기
아래 예제에서는 방법 1을 사용하여 진행하였습니다.
####1. 패키지 등록하기
Gitlab을 설치하기 위해 Repository에 패키지를 등록합니다.
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum update -y
최신 버전의 소프트웨어 정보를 얻기 위해 패키지 매니저를 업데이트합니다.
Gitlab CE 버전을 설치합니다.
sudo yum install gitlab-ce -y
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
제대로 설치되었다면 위와 같은 Output이 출력됩니다.
Gitlab을 외부에서 사용하기 위해 Port를 개방합니다.
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
Gitlab 설정 파일의 url을 https로 수정하고 Domain을 기입합니다.
sudo vi /etc/gitlab/gitlab.rb
# ..............................생략..............................
external_url 'https://[인증서가 적용되어 있는 URL]'
# ..............................생략..............................
nginx['ssl_client_certificate'] = "/etc/gitlab/ssl/[RootCA.crt]"
# ..............................생략..............................
nginx['ssl_certificate'] = "/etc/gitlab/ssl/[.crt]"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/[.key]"
우선 인증서를 넣을 파일을 생성해야합니다.
sudo mkdir /etc/gitlab/ssl
생성한 폴더에 인증서를 삽입합니다.
sudo cp [RootCA.crt, .crt, .key] /etc/gitlab/ssl
OS에서 RootCA로 발급한 인증서를 신뢰할 수 있도록 작업을 수행합니다.
sudo cp [RootCA.crt] /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
RootCA 인증서가 OS에 성공적으로 등록되었습니다.
수정한 내용을 토대로 Gitlab을 재구성합니다.
sudo gitlab-ctl reconfigure
Infra Phase complete, 86/1010 resources updated in 01 minutes 16 seconds
gitlab Reconfigured!
성공적으로 Gitlab이 재구성 되었습니다.
만약 타 서비스와 TLS를 사용하여 연동할 경우에는 추가적으로 설정이 필요합니다.
sudo cp [RootCA.crt] /etc/gitlab/trusted-certs
sudo gitlab-ctl reconfigure
trusted-certs 폴더에 타 서비스의 RootCA 인증서 파일을 넣고 재시작합니다.
서버에 들어가기 위해 Root 계정의 비밀번호를 변경하겠습니다. 우선 Gitlab 설정 세션으로 진입합니다.
sudo gitlab-rails console -e production
Root 계정으로 들어갑니다.
user = User.where(id: 1).first
비밀번호를 변경합니다.
user.password='[변경할 비밀번호]'
user.password_confirmation='[변경할 비밀번호]'
변경을 완료했으면 변경한 설정을 저장하고 세션을 종료합니다.
user.save
exit
서버를 접속해서 수정한 Root 계정으로 로그인합니다.

정상적으로 접속이 되었습니다.