mind.

学んだことの記録

セルフホストしたGitLabにhttpsでアクセスできるようにする。ドメイン名を使用せず、警告を出さずに――

環境

  • vagrantで起動したCentos7.6
  • GitLab12.10をインストール済み
  • サーバーのIPアドレスは「192.168.33.10」

手順

下準備

  • sudoを打たなくていいようにする
sudo su -
cd /etc/ssl
mkdir myCA
cd myCA
mkdir newcerts
mkdir certs
mkdir crl
mkdir private
chmod 700 private

証明書作成

openssl genrsa 2048 > server.key
  • 証明書署名要求を作成する
openssl req -new -key server.key > server.csr

対話モードで入力するパラメータは適宜入力する。
Common Nameは必須で適当に入力すること。
他は空でOK。

openssl x509 -days 36500 -req -signkey server.key < server.csr > server.crt

36500は有効期限を示す。

  • opensslの設定ファイル変更
nano /etc/pki/tls/openssl.cnf

変更点のみ記載

[ CA_default ]
dir = /etc/ssl/myCA
certificate = $dir/ca.crt
private_key = $dir/ca.key

[ usr_cert ]
subjectAltName = @alt_names

[ req ]
req_extensions = v3_req

[ v3_req ]
subjectAltName = @alt_names #追記

[ alt_names ]
DNS.1 = localhost
IP.1 = 192.168.33.10
IP.2 = 127.0.0.1
  • オレオレ証明局の秘密鍵と証明書ファイルを作成
openssl req -new -x509 -sha256 -days 36500 -newkey rsa:4096 -out ca.crt -keyout private/ca.key

秘密鍵パスフレーズ解除

openssl rsa -in private/ca.key -out private/ca.key
openssl req -new -sha256 -days 36500 -newkey rsa:4096 -out server.csr -keyout private/server.key

秘密鍵パスフレーズ解除

openssl rsa -in private/server.key -out private/server.key
openssl x509 -req -in server.csr -CA ca.crt -CAkey private/ca.key -CAcreateserial -out server.crt -days 36500 -sha256 -extensions SAN -extfile <(printf "
[SAN]
subjectAltName=@alt_names
basicConstraints=CA:FALSE
[alt_names]
DNS.1=localhost
IP.1=192.168.33.10
IP.2=127.0.0.1")
cp -i private/server.key /etc/pki/tls/private/
cp -i server.crt /etc/pki/tls/certs/
chmod 400 /etc/pki/tls/private/server.key
chmod 400 /etc/pki/tls/certs/server.crt
  • ca.crt をrsyncなりsambaなりでクライアントPCに保存する

  • クライアントPCのブラウザでca.crt をインポートする

GitLab設定

  • GitLabの設定ファイル変更
nano /etc/gitlab/gitlab.rb
external_url 'http://localhost'
 ↓
external_url 'https://192.168.33.10'

# 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/certs/server.crt"
nginx['ssl_certificate_key'] = "/etc/pki/tls/private/server.key"
  • 設定ファイルの変更を適用
gitlab-ctl reconfigure
  • ブラウザで動作確認

https://192.168.33.10

参考URL

www.gitlab.jp

qiita.com

qiita.com

LANのIPアドレスに対してSANを適用して真正なSSL証明書を作成する手順 · GitHub

tech.sanwasystem.com