2013年10月13日日曜日

gitlabの設定でハマった点

 

 

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 件のコメント:

コメントを投稿