問題のシナリオ締め切りまであと5分というところで、GitHub CopilotやPrettierのような重要な拡張機能が必要になったとします。「インストール」をクリックしたものの、プログレスバーの代わりにVS Codeが「self signed certificate in certificate chain」というエラーを表示します。これは企業ネットワークにおける典型的な悩みです。
これは通常、SSLインスペクション(SSL通信の可視化)を行うファイアウォールやVPN環境下で作業している場合に発生します。プロキシが通信を傍受し、元の証明書を独自のものに置き換えます。VS Codeはこの「許可されていない」仲介者を検知し、安全を確保するために接続を遮断します。
根本的な原因:Node.jsとシステムの不一致VS CodeはElectronとNode.js上で動作しています。デフォルトでは、Node.jsはハードコードされた独自の信頼済みルート証明機関(CA)リストを使用します。そのため、Windowsの証明書ストアやmacOSのキーチェーンに既にインストールされている証明書が無視されることがよくあります。会社のプロキシが2048ビットの自己署名証明書をチェーンに挿入すると、Node.jsはそれを認識できず、即座にハンドシェイクに失敗します。
クイックフィックス(注意して使用してください)締め切りが迫っている場合は、VS Codeのチェックを緩和させることができます。これが拡張機能を動作させる最も速い方法です。警告: この方法はセキュリティを低下させます。接続先サーバーの身元確認を停止するため、理論的には中間者攻撃(Man-in-the-Middle)に対して無防備になる可能性があります。
- VS Codeの設定(Ctrl + ,)を開きます。-
proxy strict sslを検索します。- Http: Proxy Strict SSL のチェックを外します。または、settings.jsonに直接以下を貼り付けます:
{
"http.proxyStrictSSL": false
}
これで拡張機能がすぐにインストールされるはずです。これは恒久的な解決策ではなく、あくまで一時的なパッチとして扱ってください。
プロフェッショナルな修正方法:システムストアとの同期最新のVS Code(バージョン1.60以降)には、セキュリティを無効にせずに企業プロキシを処理する組み込みの方法が用意されています。SSLエラーを無視する代わりに、ブラウザが使用しているのと同じ証明書をVS Codeに信頼させることができます。
方法1:システム証明書のサポートを有効にする- 設定を開きます。- system certificate を検索します。- Http: System Certificate Proxy Support を探します。- 設定を off から on に変更します。- VS Codeを再起動します。これが最もクリーンな方法です。IT部門によって確立された信頼設定をVS Codeが継承できるようになります。
方法2:NODE_EXTRA_CA_CERTS 環境変数の利用上記の設定で解決しない場合は、基盤となるNode.jsプロセスに対して、会社のルート証明書ファイル(通常は .pem または .cer)を直接指定できます。まず、ブラウザやキーチェーンから企業のCAをエクスポートしておいてください。
Windows (PowerShell) の場合:
$env:NODE_EXTRA_CA_CERTS="C:\Users\Admin\Documents\corp-root-ca.pem"
code .
macOS/Linux の場合:
export NODE_EXTRA_CA_CERTS="/Users/name/certs/corp-root-ca.pem"
code .
この設定を永続化するには、システムの環境変数(Windows)または .zshrc ファイル(Mac/Linux)にこの変数を追加してください。
代替案:ターミナルからのインストールGUIが動かなくても、ターミナルなら正常に動作することがあります。コマンドラインインターフェース(CLI)経由でインストールを試みることができます。これにより、拡張機能マーケットプレイスのUIよりも確実にシェルのプロキシ設定を継承できる場合があります。
code --install-extension esbenp.prettier-vscode

