Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

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:

tad
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした