gitlabの設定でハマった点と解決策。自己署名証明書(俺様野良証明書)でHTTPSをするときにはまるのだと思われる。
環境
- OS:Ubuntu 12.04.03 LTS 64bit
- webサーバ:apt-getでインストールしたnginx
- ruby:ruby 2.0.0p247 (ソースからコンパイル)
- gitlab:6.1
- gitlabのインストールは,公式のインストール方法に従った。
- gitlabへの接続は,https接続。httpで接続した場合は,https接続に強制的に切り替える。
-
SSLは自己署名証明書を使う。
サーバのgit repositoryにsshで接続できない
gitlabへの接続をnginxの設定で強制的にhttps接続にしている場合,gitlab-shellのconfig.ymlにsslの鍵ファイルへのパスを設定しないと,クライアントのPCから,sshでgitできない。
修正するファイル:gitlab-shell/config.yml(説明通りにしている場合,/home/git/gitlab-shell/config.yml)
修正する場所:https_settings
http_settings:
# user: someone
# password: somepass
# ca_file: /etc/ssl/cert.pem
# ca_path: /etc/pki/tls/
self_signed_cert: false
- ca_fileに,sslの証明書ファイルのパスを入れて,#を外して有効にする。
- ca_pathに,sslの証明書ファイルのあるディレクトリへのパスを入れて,#を外して有効にする。
- self_signed_certを有効にするために,falseをtrueに変える。
上記の設定を行わないと,git でpushしたときに,エラーがでる。
ca_fileとca_pathは,rubyのOpenSSLクラスのattributeであるよう(参照:ca_fileの説明・ca_pathの説明)。未検証だが,ca_fileかca_pathのどちらか一方を設定するだけでもよいかもしれない。
self_signed_certの部分は自己署名証明書を使う場合の設定だと思われる。gitlabへの接続を自己認証証明書を使ったhttpsだけで行っている場合には,trueに設定する。
http_settingsの設定は,sshで接続をする場合には,全く関係がないはずなのですが…。gitlab-shellがsshをつかったgitのやりとりとhttpを使ったgitのやりとりの両方を司っている関係で,http関係の設定が必要になっているのではと勝手に納得した。
git+httpsでgitlabに接続できない
これはgitlabの問題ではない。git+httpsで自己署名証明書を使ったサーバ接続するときに起こる問題の様子。
上記のサーバ側のgitlab-shell/config.ymlのhttp_settingsの設定に加えて,ローカルのgitに設定が必要。
gitは,https上で動く場合には,自己署名証明書は認めない設定がデフォルトの様子。そのため,クライアントのPCのgitの設定を変える必要がある。
設定の変え方は,2通りある。
その1.git+httpsに関して全面的に証明書のチェックをしないと心に決めた場合
ローカルで下記のコマンドを実行。
config --global http.sslverify false
その2.リポジト毎に切り替えたい場合
.git/configのsslVerifyの値をfalseに変更する。
[http]
sslVerify = false
とする。
ssh接続するときのクライアント側の設定(ubuntu-desktop)
opensslを使ったkeyの作成後,ssh-addをする。ssh-addをするまで,秘密鍵がssh-agentに追加されない。
gitに慣れていないので,git関係の単語の使い方がよくわからん…。
0 件のコメント:
コメントを投稿