git で https なリモートレポジトリを登録
概要
git を利用していて、リモートレポジトリを登録するときに、https を使いたい。
具体的には、プライベートサーバーに立てた gitbucket を remote origin にしたいが、単に
git remote add origin https://MY.PRIVATE.HOST/gitbucket/git/USERNAME/PROJECT.git
git push -u origin
とすると、
error: server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none while accessing .....
のように表示され、うまく push できない。
よく見つかる例(だけどセキュリティ的に不安)
上記エラーメッセージをもとにネット検索をしてみると、
export GIT_SSL_NO_VERIFY=1
にするとか
git config --global http.sslverify false
にすると良い、というような情報が見つかる。
でも、それって証明書を無視しているわけだから(しかも場合によっては、すべてのプロジェクトで)、セキュリティ的には不安だし、根本的な解決にはなっていないような気がした。
で、どうするか
stackoverflow の記事を参照に、
HOST=MY.PRIVATE.HOST
PORT=443
echo -n | openssl s_client -showcerts -connect ${HOST}:${PORT} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
として、表示された内容を /etc/ssl/certs/ca-certificates.crt などに書き加える。
参照した記事には「表示された証明書のすべてを追記」みたいなことが書かれているので、その通りにした方がいいと思われる。
今回のサーバーは自己証明書だったので、証明書一つ分の追記で正常に動いた。
・・・結局、自己証明書のサーバーなのでセキュリティ的な問題は残るような気もするが、そこはあえて目を瞑る。
参照
Author And Source
この問題について(git で https なリモートレポジトリを登録), 我々は、より多くの情報をここで見つけました https://qiita.com/sekizo/items/2d809ac776e6512531fc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .