なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Msys2でSSL certificate problem: unable to get local issuer certificateが出たとき

エラー内容

git cloneしようとして、以下のようなエラー

fatal: unable to access 'https://gitlab-xxxx/yyyy/xxxx.git/': SSL certificate problem: unable to get local issuer certificate

原因

対象のGitサーバが使用している証明書のRoot証明書がmsys2に登録されてない。

対策

.gitconfigをちゃんと設定すればよし

qiita.com

対策の内容
  • 普段はGit(というより、システムの)デフォルトCA証明書を使用してGitサーバにアクセスする
  • 特定のサイトだけ、必要なCA証明書を指定してGitでアクセスするようにする
    • 必要な証明書は複数の場合があります、ブラウザから必要な証明書出してcer形式で出力しcatで結合するとよい

上のサイトに書いてあるように、こんなpemファイル(拡張子は何でもよい)を作る

簡単に言えば,以下のようにSSLサーバ証明書,1つ上の中間CA証明書,さらにその上の中間CA証明書を (テキストとして) 結合し保存して下さい.

-----BEGIN CERTIFICATE-----
SSLサーバ証明書の内容
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
1つ上の中間CA証明書の内容
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
さらにその上の中間CA証明書の内容
-----END CERTIFICATE-----
動作チェック
  • git ls-remote を実行してやればOK
$ git ls-remote https://github.com/Hiroyuki-Nagata/foobar.git
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx        HEAD
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx        refs/heads/master

$ git ls-remote https://gitlab.intra.com/foobar.git
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx        HEAD
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx        refs/heads/master