AWS EC2에 올레올레 인증서를 사용하여 SSL 지원 GitLab 설치

AWS EC2에 올레올레 인증서를 사용하여 SSL 지원 GitLab 설치

2022-10-04 last update

6 minutes reading AWS GitLab EC2

0. 환경



AMI : Amazon Linux 2 AMI 2.0.20191217.0 x86_64 HVM gp2 (ami-011facbea5ec0363b)지역: Tokyo(ap-northeast-1)
EC2를 세울 때까지는 생략합니다. 그냥 스펙에 관해서는

We also strongly recommend at least 4GB of free RAM to run GitLab.
htps // 아보 t. 기 t b. 코 m / 인 s ta l / # 센토 s-7

와 같이 RAM이 4GB 이상 필요하므로 AWS EC2에 GitLab을 구축하는 경우 t2.medium 이상의 머신 스펙이 필요합니다. ( t2.micro 로 설치하면 설치 직후에 엄청 무거워지고 시스템 전체가 중단됩니다)

1. 종속 라이브러리 설치



여기 의 내용을 따라 진행합니다.
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

위 페이지에 작성되었지만 다음 명령은 필요하지 않습니다.
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

AWS의 경우, 방화벽 개념은 보안 그룹으로 관리되는 것으로 다루기 때문입니다. 실행해도 amazon linux에는 firewall-cmd가 없으므로 명령을 찾을 수 없으면 화가납니다.

그런 다음 postfix를 설치합니다.
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

2. GitLab 도입



2.1. GitLab 설치



그런 다음 GitLab을 설치합니다. 여기에서는 EXTERNAL_URL 에 EC2의 Public DNS(ipv4)를 설정했습니다. Public DNS는 AWS 콘솔 화면 -> EC2 -> 왼쪽 사이드 패널 인스턴스 -> 생성한 EC2 선택 -> 하단 패널의 설명 탭에 작성됩니다. 구체적으로는 ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com 와 같은 도메인명이 되고 있습니다. 이 이후에는 EC2의 Public DNS를 ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com로 표시합니다.
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee

몇 분이 지나면 설치가 완료됩니다.

공개 DNS가 나오지 않으면



VPC를 자체 제작한 경우 Public DNS가 처음에는 표시되지 않을 수 있습니다. 그 경우는 AWS에서 Public DNS(Public DNS)를 할당할 수 없는 경우 해결 방법 를 참고로 설정을 변경하면 Public DNS가 표시되게 됩니다.

2.2. 올레올레 인증서로 SSL 설정



여기 를 따라 진행합니다.
vim /etc/gitlab/gitlab.rb

설치 직후는 external_url 로 http가 설정되어 있으므로 이것을 https로 변경합니다.
< external_url "http://[EC2のPublic DNS名]"
---
> external_url "https://[EC2のPublic DNS名]"

그런 다음 올레올레 인증서를 만듭니다. https 설정 및 올레올레 인증서 (자체 서명 인증서) 만들기 를 참고로 했습니다.
cd /etc/gitlab/ssl
openssl genrsa -aes128 1024 | sudo tee -a ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com`.key
Enter pass phrase: -> 好きなパスワードを入力
Verifying - Enter pass phrase: -> パスワード再入力
/etc/gitlab/ssl의 소유자는 루트이므로 파일 쓰기에 루트 권한을 갖게하기 위해 sudo tee를 사용합니다. 리디렉션 > 그러면 권한 오류가 발생합니다.
openssl req -new -key ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key | sudo tee -a ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.csr
Enter pass phrase for ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key: -> 先ほどのパスワードを入力
sudo openssl x509 -in ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.csr -days 36500 -req -signkey ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key | sudo tee -a ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.crt
sudo mv ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key.old
Country Name (2 letter code) []:JP
State or Province Name (full name) [Some-State]: -> スキップ
Locality Name (eg, city) []: -> スキップ
Organization Name (eg, company) [Internet Widgits Pty Ltd]: -> スキップ
Organizational Unit Name (eg, section) []: -> スキップ
Common Name (eg, YOUR name) []: ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
Email Address []: -> スキップ

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: -> スキップ
An optional company name []: -> スキップ
sudo openssl rsa -in ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key.old -out ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key
Enter pass phrase for ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key: -> 先ほどのパスワードを入力

여기까지 실행하면, /etc/gitlab/ssl 부하는 이러한 파일 구성이 될 것.
tree
.
├── ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.crt
├── ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.csr
├── ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key
├── ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com.key.old

이 상태에서 reconfigure합니다.
sudo gitlab-ctl reconfigure
https://ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com 에 액세스 할 수 있으면 무사히 설치 완료입니다. 문제가 있으면 tail하여 오류 원인을 확인하는 것이 좋습니다.
sudo gitlab-ctl tail

또, 이번은 올레올레 증명서를 사용하고 있는 영향으로, 로컬로부터 Clone/Push등의 조작을 더했을 때에 에러가 됩니다. 이 문제를 해결하려면 다음 명령으로 SSL Verify를 비활성화합니다. (참고 : htps : // m / r / ms / 5 a d5006 a 4912617d2610)
git config --global http.sslVerify false