GitLabをSSH化し、HTTPSで接続できるようにします。
サーバ証明書の準備ができており、下記のディレクトリに配置していることを前提とします。
秘密鍵
/etc/pki/tls/private/server.key
サーバ証明書
/etc/pki/tls/certs/server.crt
※いずれもパーミッションは400、rootユーザ(GitLabはデフォルトでrootユーザとなる)
GitLabのSSL化は設定ファイルを書き換えることで行えます。
GitLabを導入したディレクトリに設定ファイルがあるので下記のように書き換えます。
$ vi /etc/gitlab/gitlab.rb
「external_url」をhttpからhttpsに変更します。
#変更前 external_url 'http://ec2-XX-XXX-XXX-XX.ap-northeast-1.compute.amazonaws.com' #変更後 external_url 'https://ec2-XX-XXX-XXX-XX.ap-northeast-1.compute.amazonaws.com'
nginx関連の2行のコメントアウトを外しサーバ証明書のパスを設定します。
#変更前 #nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt" #nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key" #変更後 nginx['ssl_certificate'] = "/etc/pki/tls/private/server.crt" nginx['ssl_certificate_key'] = "/etc/pki/tls/certs/server.pem"
gitlabのコマンドで設定を反映させます。
$ gitlab-ctl reconfigure
gitlabを再起動します。
$ gitlab-ctl restart
下記のように全プロセスが正常に起動すれば設定が完了します。
ok: run: gitaly: (pid 11819) 1s ok: run: gitlab-monitor: (pid 11824) 0s ok: run: gitlab-workhorse: (pid 11828) 1s ok: run: logrotate: (pid 11837) 0s ok: run: nginx: (pid 11844) 1s ok: run: node-exporter: (pid 11849) 0s ok: run: postgres-exporter: (pid 11855) 0s ok: run: postgresql: (pid 11863) 1s ok: run: prometheus: (pid 11874) 0s ok: run: redis: (pid 11883) 1s ok: run: redis-exporter: (pid 11887) 0s ok: run: sidekiq: (pid 11897) 0s ok: run: unicorn: (pid 11902) 0s
自動インストールのシェルでgitlabを導入した場合Webサーバとしてnginxが採用されます。
中間証明書を設定する際はサーバ証明書と結合して使用することとなります。