Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Mac OS Xのgitでhttpsクライアント認証を使用する

クライアント認証に失敗する問題

gitでSSLクライアント認証が必要なhttpsサイトを使用する場合、通常以下のような設定を行いますが、OS Xではエラーとなります。

$ git init 
$ git config --local http.sslCert ~/.ssh/Hoge.crt
$ git config --local http.sslKey  ~/.ssh/Hoge.key
$ git config --local http.sslVerify false #オレオレ証明書なので

リモートを登録してpullしてみます。

$ git remote add origin https://gitlab.example.com/test/sample.git
$ git pull origin master

以下のようなエラーとなります。

* Couldn't find host gitlab.example.com in the .netrc file; using defaults
*   Trying xxx.xxx.xxx.xxx...
* Connected to gitlab.example.com (127.0.0.1) port 443 (#0)
* WARNING: SSL: CURLOPT_SSLKEY is ignored by Secure Transport. The private key must be in the Keychain.
* WARNING: SSL: Certificate type not set, assuming PKCS#12 format.
* SSL: Can't load the certificate "/Users/tad/.ssh/Hoge.crt" and its private key: OSStatus -25299
* Closing connection 0
fatal: unable to access 'https://gitlab.example.com/test/sample.git/': SSL: Can't load the certificate "/Users/tad/.ssh/Hoge.crt" and its private key: OSStatus -25299

エラーの内容がわかりやすいように export GIT_CURL_VERBOSE=1 してから実行しています。

curl --versionするとわかるのですが、OSXではOpenSSLではなくSecure Transportが使用されているためPKCS#12フォーマットの証明書を必要とするようです。

しかし、gitではPKCS#12のファイル(*.p12)を指定できないようです。
はてさて……

解決方法

OpenSSLにリンクしたcurl及びgitをbrewからビルド&インストールします。

curlのインストール

--with-opensslを付けてインストールします。

$ brew install --with-openssl curl

gitのインストール

$ brew install \
--with-brewed-curl \
--with-brewed-openssl \
git

--with-brewed-opensslは要らんかも :sweat_smile:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?