Help us understand the problem. What is going on with this article?

AWS EC2にオレオレ証明書を用いたSSL対応のGitLab環境を構築する

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.
https://about.gitlab.com/install/#centos-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の場合、firewallの概念はセキュリティグループとしてマネージドでカバーしているためです。実行しても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

数分経つとインストールが完了します。

Public DNSが出てこない場合

VPCを自作した場合、Public DNSが初めは表示されてない可能性があります。その場合はAWSでPublic DNS(パブリック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のオーナーはrootなので、ファイル書き込みにroot権限を持たせるために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を無効にします。(参考:https://qiita.com/karno/items/5ad5006a4912617d2610)

git config --global http.sslVerify false
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした