---
title: "Macで会社のプロキシ証明書がnpm、Git、curlのエラーになる · Kilobatガイド"
url: "https://kilobat.app/ja/guides/corporate-proxy-certificates.html"
description: "会社のプロキシ環境で、npm、Node、Git、curl、Homebrewの「unable to get local issuer certificate」を、証明書チェックをオフにせずに解決します。"
---

VPN、プロキシ、フィルタ

# Macで会社のプロキシ証明書がターミナルのツールを妨げる

会社のネットワークの中には、HTTPSの通信を検査するものがあります。プロキシは会社のルート証明書で通信に署名し直すので、その証明書を信頼していないツールは止まります。

対象：現在のすべてのmacOSバージョン。Node.jsの`NODE_USE_SYSTEM_CA`には、Node.js 22.19、24.6以降が必要です。 · 確認日：2026年10月29日

## 症状

- npmやNodeで「self-signed certificate in certificate chain」や「unable to get local issuer certificate」と表示される。
- GitでHTTPSのリモートに対して「SSL certificate problem」と表示される。
- Safariではサイトが開くのに、curlやPythonでは開けない。
- エラーが会社のネットワークやVPNでだけ起きる。

## 考えられる原因

- **TLSインスペクション。**プロキシは、サイトの証明書を会社のルート証明書で署名した証明書に置き換えます。
- **別々の信頼ストア。**SafariはmacOSのキーチェーンを使います。コマンドラインツールの多くは、独自の信頼済み証明書リストを使います。
- **プロキシ設定がない。**ターミナルのツールは、システムのプロキシを使うとは限りません。プロキシ変数か、ツール独自の設定が必要です。

## 確認方法

1. サーバが送ってくる証明書チェーンを表示します。いちばん上の証明書の発行者を確認します。

   ```
   openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/null
   ```
2. curlでTLSハンドシェイクを表示します。

   ```
   curl -v https://registry.npmjs.org/ -o /dev/null
   ```
3. 「キーチェーンアクセス」で会社のルート証明書を探します。「システム」キーチェーンで会社名を検索します。
4. シェルのプロキシ変数を表示します。

   ```
   env | grep -i proxy
   ```

## 解決方法

1. IT部門から会社のルート証明書をPEMファイルでもらいます。出どころのわからない証明書は信頼しないでください。
2. Node.jsのツールでは、`NODE_EXTRA_CA_CERTS`でファイルを指定します。設定したら、ツールを起動し直します。

   ```
   export NODE_EXTRA_CA_CERTS=~/certs/company-root.pem
   ```
3. Node.js 22.19、24.6以降では、キーチェーンが信頼している証明書を使えます。

   ```
   export NODE_USE_SYSTEM_CA=1
   ```
4. npmでは、証明書ファイルを設定します。

   ```
   npm config set cafile ~/certs/company-root.pem
   ```
5. Gitでは、証明書ファイルを設定します。

   ```
   git config --global http.sslCAInfo ~/certs/company-root.pem
   ```
6. curlでは、`--cacert`でファイルを指定します。

   ```
   curl --cacert ~/certs/company-root.pem https://example.com
   ```
7. IT部門がプロキシを使っている場合は、ターミナルのツールに会社のプロキシを設定します。

   ```
   export https_proxy=http://proxy.example.com:8080
   ```
8. `strict-ssl`や`http.sslVerify`などの証明書チェックをオフにしないでください。接続が安全ではなくなります。

## Kilobatを使う場合

1. Kilobatの接続チェックは、TLSの失敗を独立したレイヤーとして報告します。直接の経路ではつながらないのにシステムのプロキシ経由ならつながる場合も、そのことを示します。

   ```
   kilobat why https://registry.npmjs.org/
   ```
2. そのアプリの環境のプロキシ変数を使うには、`--app`を追加します。

   ```
   kilobat why https://registry.npmjs.org/ --app process:node
   ```

## よくある質問

**npmが失敗するのにSafariではつながるのはなぜですか？**

SafariはmacOSのキーチェーンにある証明書を信頼します。npmは、会社の証明書を追加しない限り、Node.jsに含まれる証明書を使います。

**strict-sslをfalseにしても安全ですか？**

いいえ。レジストリに対する証明書チェックがすべて止まります。代わりに会社のルート証明書を追加してください。

## 出典

- [Node.js：Command-line API、NODE_EXTRA_CA_CERTSと--use-system-ca](https://nodejs.org/api/cli.html)
- [npm Docs：config（cafile、proxy、https-proxy、strict-ssl）](https://docs.npmjs.com/cli/v11/using-npm/config)
- git-config(1)、http.sslCAInfoとhttp.proxy、macOS 27.2に付属のmanページ（Git 2.56）
- [Appleサポート：「キーチェーンアクセス」で証明書の信頼設定を変更する](https://support.apple.com/guide/keychain-access/kyca11871)
- curl(1)、macOS 27.2に付属のmanページ

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」で`man <name>`を実行すると開けます。

## 関連ガイド

- [MacでHomebrewやnpmのダウンロードが失敗する](https://kilobat.app/ja/guides/homebrew-npm-download-fails.html): Homebrewはcurlとgitでダウンロードします。
- [Macでプロキシ設定のせいでアプリが接続できない](https://kilobat.app/ja/guides/proxy-settings-breaking-apps.html): プロキシ設定は、通信を別のサーバ経由で送ります。
- [Macで「この接続ではプライバシーが保護されません」などの証明書の警告が出る](https://kilobat.app/ja/guides/connection-not-private-mac.html): SafariはWebサイトの身元を確認できないとき、証明書の警告を表示します。
- [MacでSSHやGitがタイムアウトする](https://kilobat.app/ja/guides/ssh-git-timeouts.html): SSHとGitには、サーバへの正常なTCP接続が必要です。
