Edited at

Gitlab を StartSSLの証明書で HTTPS設定したこと

More than 1 year has passed since last update.


概要

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を使います。

こちら参考に設定しました。

http://dev.classmethod.jp/cloud/aws/acm-verifydomain-ses/


EC2のセキュリティグループ設定

HTTPS(Port 443)を許可します。


StartSSLで証明書を取得する

こちら参考に取得しました。

http://qiita.com/paralleltree/items/56451c3eb240c7e95eca

CSRの作成は、StartSSLの画面に案内されている通り opensslコマンドで行いました。

Domain Validation のメール送信から code入力までが 1分以内というのがかなりタイトです。

以下を1分以内にやらなきゃいけません。


  1. StartSSLの画面で送信

  2. S3からメールをダウンロード

  3. ダウンロードしたメールを開いて codeを探してコピー

  4. 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に変更します


/etc/gitlab/gitlab.rb

external_url "https://gitlab.humannext.co.jp" 


「https」と書くだけで良きに計らってくれるとは、Gitlab賢いですね。

最後に、gitlab-ctlコマンドで再構築をします。

reconfigure後に、statusコマンドで確認します。

全てのサービスが起動していれば成功です!

# gitlab-ctl reconfigure

# gitlab-ctl status


はまったとこ


秘密鍵・公開鍵の形式

Decryptが必要なことや、公開鍵はどれを使えばいいのか判らず右往左往しました。

形式が違う鍵を入れていた場合、reconfigure後に nginxだけタイムアウトで落ちてしまいました。

こちらと同じかな?と試してみたら上手くいきました。

https://about.gitlab.com/2016/06/24/secure-gitlab-pages-with-startssl/


Thanks a lot!!

https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md