読者です 読者をやめる 読者になる 読者になる

SSLクライアント認証が必要なGitリポジトリをクローンする

例えば、https://your.domain/git/hoge.gitとしてホストしている
リモートリポジトリの領域がクライアント認証を要求している場合、
そのリポジトリのローカルリポジトリを作成するには、
git clone では認証情報が無いのでリポジトリにアクセスできないため、
代わりに以下のようにします。

$ mkdir hoge
$ cd hoge
$ git init
$ git config --local http.sslCert /path/to/client.cert
$ git config --local http.sslKey /path/to/client.key
$ git config --local http.sslCaInfo /path/to/ca.cert
$ git config --local http.sslVerify false
$ git remote add origin https://your.domain/git/hoge.git
$ git pull origin master

http.sslCertには、クライアントの証明書ファイルを指定します。
http.sslKeyには、クライアントの秘密鍵ファイルを指定します。
http.sslCaInfoは、オレオレ認証局などの場合、そのCAの証明書ファイルを指定する必要があります。

以前書いたエントリ、
オレオレ認証局でSSLクライアント認証しようとしたら、色々ハマったから手順をまとめた
で説明するならば、
http.sslCertは、「クライアントの証明書を作成(毎年)」のcert.pem
http.sslKeyは、「クライアントの証明書を作成(毎年)」のkey.pem
http.sslCaInfoは、「CAの各ファイルを作成」のcacert.der
になります。

また、リモートリポジトリが空の場合、 git pull ではエラーになってしまうようで、
その場合は、普通にpushすればOKでした。

$ git add some.txt
$ git commit -m "first commit"
$ git push origin master

ちなみに、 git config --global でこれらを設定すれば、 git clone できると思いますが、
他のリポジトリを扱うことを考えると行うべきではないと思います。