1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2 + 社内プロキシ環境で Claude Code をインストールする

1
Last updated at Posted at 2026-03-12

はじめに

Claude Code は Windows ネイティブでも動作するようになったが、Docker 連携やパス解決の安定性を考えると WSL2 (Ubuntu等) での動作が推奨される。(by社外の有識者やAI)
しかし、独自のルート証明書を差し込む社内プロキシ環境では、curl、git、nvm、npm の各レイヤーで SSL エラーが発生した。
原因としては、公式の install.sh は、結局は内部で nvm をダウンロードして node を入れているのだが、

curl -fsSL https://claude.ai/install.sh | bash

その際に証明書の設定が引き継がれず、証明書エラーになる、ということらしい。
本記事では、備忘として、これらを突破して環境構築する手順を解説する。

ステップ1:WSL2 に社内ルート証明書をインポートする

Windows 側で設定済みの証明書は WSL には引き継がれない。手動でインポートする。

証明書の配置

Windows 側からエクスポートした .pem ファイルを WSL 内の /usr/local/share/ca-certificates/ にコピーする。拡張子は必ず .crt にリネームすること。

sudo cp /mnt/c/Users/YourName/Downloads/company_cert.pem /usr/local/share/ca-certificates/company.crt

社内ドキュメントには/usr/share/ca-certificates/に置くと記載されていたが、/user/local/share/ca-certificates/に置けばあとから手動操作する必要がなくなる。

なぜ local パスが必要(推奨)なのか?
Linux(Ubuntu/Debian)には、証明書を置く場所が2つあります。

/usr/share/ca-certificates/ (社内ドキュメントの場所)

OSが標準で持っている証明書を管理する場所です。

ここにファイルを置いただけでは認識されず、sudo dpkg-reconfigure ca-certificates を実行した後に、青い画面のメニューでその証明書にチェック(スペースキー)を入れて「OK」を押すという手動操作が必要です。これを忘れると反映されません。

/usr/local/share/ca-certificates/ (推奨)

「ユーザーが後から追加した証明書」専用の場所です。

ここに .crt ファイルを置いて sudo update-ca-certificates と打つだけで、メニュー操作なしで自動的に信頼済みリストに加えてくれます。

証明書ストアの更新

sudo update-ca-certificates

実行結果に 1 added, 0 removed; done. と出れば OS レベルでの認識は完了。

ステップ2:Git の SSL バックエンド問題を修正する

Windows専用のSSLバックエンド設定を解除

WSL 上の Git が Windows の設定を誤って参照し、fatal: Unsupported SSL backend 'schannel' とエラーになるため設定を解除する。

git config --global --unset http.sslBackend

OSの証明書カタログを明示的に指定

git config --global http.sslcainfo /etc/ssl/certs/ca-certificates.crt

ステップ3:nvm (Node Version Manager) の手動インストール

通常の curl -fsSL https://claude.ai/install.sh | bash が証明書エラーで止まるため、Git を介さずに直接スクリプトを取得する。

ディレクトリ作成とスクリプト取得

mkdir -p ~/.nvm
# -k オプションで証明書チェックを一時的にバイパス
curl -k -o ~/.nvm/nvm.sh https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/nvm.sh

設定を ~/.bashrc に追記

echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bashrc
source ~/.bashrc

ステップ4:Node.js のインストールと SSL 設定

nvm 経由で Node.js をインストールし、npm が社内証明書を参照するように設定する。

Node.js LTS のインストール

nvm install --lts

npm に証明書を教える

npm config set cafile /etc/ssl/certs/ca-certificates.crt
# 必要に応じてSSLチェックを緩和
npm config set strict-ssl false

ステップ5:Claude Code の導入

Node.js 実行環境自体に証明書を認識させる。

環境変数の永続化

echo 'export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt' >> ~/.bashrc
source ~/.bashrc

Claude Code のインストール

nvm を使用した場合、homeディレクトリにインストールされるのでsudo は不要。

npm install -g @anthropic-ai/claude-code

動作確認

claude

SELF_SIGNED_CERT_IN_CHAIN エラーが出ずにログイン画面が表示されれば成功

ステップ6:またSSL証明書エラーになった

Claudeのインストール、ログインに成功したのに後日claudeを使ったらまたSSL証明書エラーになった。
nvm で入れたNode.jsがsystem CAを参照しておらず、
SELF_SIGNED_CERT_IN_CHAIN(SSL/TLS通信において「証明書チェーンのどこかに自己署名証明書(信頼できない証明書)が存在する」ことを示すエラー)になっていたことが原因。
NODE_OPTIONS=--use-openssl-ca と証明書関連の環境変数を設定することで解消した。
~/.bashrcに入れることで恒久的に設定できる。

echo 'export NODE_OPTIONS=--use-openssl-ca' >> ~/.bashrc
echo 'export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt' >> ~/.bashrc
echo 'export NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/certificate.crt' >> ~/.bashrc
source ~/.bashrc

ステップ7: またまたSSL証明書エラーになった。

PCの電源を切って再度起動した以外に何もしていないのに、

という状態。
どうやらUbuntuのデフォルトの証明書を無効化していたことが原因らしい。そんな操作をしたつもりはなかったが、以下のような流れで無効化していたと思われる。
/usr/share/ca-certificates/に証明書を配置した場合、配置した証明書を反映させるとき、選択する画面が出るが(画像参照)、てっきり自分が配置したものを選んであればいいのかと思って、このままEnterを押していた。
やり直すたび毎回そうしていて、それでもclaudeを使える瞬間があったのでそれが原因ではない気もするが、mozilla/... の証明書がコメントアウトになっていたのが原因かもしれない。
コメントアウトを解除して自分で設置した証明書を含めて合計149の証明書が有効になった状態でclaudeを実行したら、数日経過後も安定して動くようになった。
image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?