概要
AWSのEC2で立てている Gitlabサーバーを、HTTPS設定しました。
設定を一行(むしろ、1文字)書き換えるだけの、超絶簡単設定かと思いきや、証明書でハマりました。
この記事では、StartSSLの証明書を利用していますが、認証局(StartCom)は 2016年10月に失効しています。
そのうち、Let's Encryptへの乗り換えについて投稿するかもしれません。
環境など
Amazon Linux AMI 2016.03
Gitlab 8.10.5
上手くいった手順
メールを受信できるようにする
証明書の発行のために、postmaster@server.domain.name.com みたいなメールを受信する必要があります。
EC2にメールサーバーを設定するとか、かなり面倒なので、SESを使います。
こちら参考に設定しました。
EC2のセキュリティグループ設定
HTTPS(Port 443)を許可します。
StartSSLで証明書を取得する
こちら参考に取得しました。
CSRの作成は、StartSSLの画面に案内されている通り opensslコマンドで行いました。
Domain Validation のメール送信から code入力までが 1分以内というのがかなりタイトです。
以下を1分以内にやらなきゃいけません。
- StartSSLの画面で送信
- S3からメールをダウンロード
- ダウンロードしたメールを開いて codeを探してコピー
- StartSSLの画面で、codeをペーストして、Validate
ま、失敗したらリトライすれば良いのですが。
証明書をGitlabサーバーに仕込む
秘密鍵
秘密鍵は Decryptする必要があります。
Gitlabのデフォルトに合わせてファイル名も変えておきます。
$ openssl rsa -in keyname.key -out keyname-decrypted.key
$ mv keyname-decrypted.key server.domain.name.com.key
公開鍵
公開鍵は、StartSSLからダウンロードして来た中の nginx用を使います。
NginxServer.zip を解凍した中に入っているファイルです。
これも、Gitlabのデフォルトに合わせてファイル名を変えます。
mv 1_server.domain.name.com.jp_bundle.crt server.domain.name.com.crt
Gitlabサーバーに置く
↑の 2ファイルを、Gitlabサーバーに転送し、/etc/gitlab/ssl/ へ保存します。
# cd /etc/gitlab
# mkdir /ssl
# chmod 700 ssl
# mv ~/server.domain.name.com.* /etc/gitlab/ssl
# cd ssl
# chmod 400 server.domain.name.com.key
設定変更して再起動
設定をhttpsに変更します
external_url "https://gitlab.domain.name.com"
「https」と書くだけで良きに計らってくれるとは、Gitlab賢いですね。
最後に、gitlab-ctlコマンドで再構築をします。
reconfigure後に、statusコマンドで確認します。
全てのサービスが起動していれば成功です!
# gitlab-ctl reconfigure
# gitlab-ctl status
はまったとこ
秘密鍵・公開鍵の形式
Decryptが必要なことや、公開鍵はどれを使えばいいのか判らず右往左往しました。
形式が違う鍵を入れていた場合、reconfigure後に nginxだけタイムアウトで落ちてしまいました。
こちらと同じかな?と試してみたら上手くいきました。
Thanks a lot!!