> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# エアギャップ化された Devin のネットワークと証明書

> エアギャップ化された Devin Desktop と CLI をネットワーク環境に合わせて設定します。DEVIN_CA_BUNDLE によるプライベート CA の信頼設定、プロキシの利用、NET および CFG004 コードの解決方法について説明します。

> [!NOTE]
>
> このドキュメントは、Devin の連邦政府向け導入環境を対象としています。[Devin ドキュメントに戻る](/ja/get-started/devin-intro)

エアギャップ化された CLI と Desktop は、[models ファイル](/ja/federal/air-gapped/models-file)で指定したモデルエンドポイント、[auth ファイル](/ja/federal/air-gapped/sso)で指定したアイデンティティプロバイダーの発行者、およびローカルで設定した MCP サーバーに接続します。このページでは、これらの接続に必要なネットワーク要件として、TLS の信頼設定、任意のプロキシ設定、および接続に失敗した際に表示されるコードについて説明します。

***

## TLS の要件

* すべてのモデルの `base_url` と SSO の `issuer` には `https://` を使用する必要があります。`http://` が許可されるのは、ループバックホスト (`localhost`、`127.0.0.0/8`、`[::1]`) の場合のみです。
* 証明書の検証には、オペレーティングシステムのトラストストア (macOS では Security.framework、Linux ではシステムの CA ストア) が使用されます。エンドポイントの署名に使われている CA がワークステーションにすでにインストールされている場合、追加の設定は不要です。
* エンドポイントが OS のトラストストアに*含まれていない*プライベート CA によって署名されている場合は、以下の手順に従って `DEVIN_CA_BUNDLE` でその CA を追加してください。CLI が証明書の検証を無効にすることはありません。

## `DEVIN_CA_BUNDLE` でプライベート CA を信頼する

`DEVIN_CA_BUNDLE` には PEM ファイルを指定します。このファイル内の証明書は、OS のトラストストア**に加えて**信頼されます。この設定は、推論リクエスト、`devin airgap doctor` のプローブ、および SSO (シングルサインオン) でのログインと再検証の際に CLI が IdP に送信するすべてのリクエストに適用されます。

**1. バンドルを作成する**

プライベート CA のルート証明書 (中間証明書を利用している場合はそれも含む) を 1 つの PEM ファイルにまとめます。ファイルには複数の `-----BEGIN CERTIFICATE-----` ブロックを含めることができます。

```sh theme={null}
sudo install -m 0644 ./corp-root-ca.pem /etc/devin/ca-bundle.pem
```

各エンドポイントで証明書や CA を共通にする必要はありません。バンドルはエージェントプロセス全体で 1 つだけで、すべての接続に適用されます。そのため、エンドポイントごとに異なるプライベート CA で署名されている場合は、それらの CA をすべて同じファイルに連結してください。

```sh theme={null}
cat ./corp-root-ca.pem ./ml-platform-ca.pem ./idp-root-ca.pem | sudo tee /etc/devin/ca-bundle.pem > /dev/null
sudo chmod 0644 /etc/devin/ca-bundle.pem
```

このバンドルを使うと、`https://vllm.corp.example` (`corp-root-ca` で署名) 、`https://models.ml.example` (`ml-platform-ca` で署名) 、および IdP (`idp-root-ca` で署名) がすべて信頼されます。OS のトラストストアに既に含まれている CA で署名されたエンドポイントについては、項目を追加する必要はありません。models ファイルにはモデルごとの証明書や TLS のフィールドはなく、エンドポイントごとに別々のバンドルを使用することもできません。

**2. エージェントの環境で変数をエクスポートする**

```sh theme={null}
export DEVIN_CA_BUNDLE=/etc/devin/ca-bundle.pem
```

この変数は、エージェントを実行するプロセスから参照できる必要があります。ターミナル版 CLI の場合は、すべてのユーザーのシェルプロフィールで設定してください。Desktop の場合は、モデルの APIキー用変数と同じ方法で設定します ([APIキーの環境変数](/ja/federal/air-gapped/models-file#api-key-environment-variables)を参照) 。`devin.acp.agentEnv` 設定に追加するか、macOS では `launchctl setenv DEVIN_CA_BUNDLE /etc/devin/ca-bundle.pem` を実行してください (`open` ではシェルの環境がアプリに引き継がれません) 。

**3. doctor で確認する**

```sh theme={null}
devin airgap doctor
```

```text theme={null}
…
pass  CA bundle                                 /etc/devin/ca-bundle.pem (3 certificate(s))
pass  model 'llama-3.3-70b': endpoint reachability  GET https://vllm.corp.example/v1/models -> 200 OK (trusted only via DEVIN_CA_BUNDLE — the OS trust store alone rejects this endpoint's certificate)
pass  model 'qwen3-vl-32b': endpoint reachability  GET https://models.ml.example/v1/models -> 200 OK (trusted only via DEVIN_CA_BUNDLE — the OS trust store alone rejects this endpoint's certificate)
…
```

末尾の `trusted only via DEVIN_CA_BUNDLE` は、エンドポイントがバンドルによって信頼されていることを示します。doctor は到達可能な各エンドポイントに対し、OS のトラストストアのみを使って再試行し、その試行が TLS で失敗するかどうかを報告します。変数が設定されていない場合、CA bundle の行には `not configured (OS trust store only; set DEVIN_CA_BUNDLE to add a private CA)` と表示されます。

ファイルを読み取れない場合、無効な PEM セクションが含まれている場合、または証明書が 1 つも含まれていない場合、doctor は **CA bundle** チェックを `CFG004` で失敗とし、パーサーのメッセージ (例えば `failed to read CA bundle '/etc/devin/ca-bundle.pem': No such file or directory`) を表示します。一方、実行時には同じ状況でも致命的エラーにはなりません。CLI は `warning: ignoring DEVIN_CA_BUNDLE: …` という行を出力し、OS のトラストストアにフォールバックします。そのため、パスの入力ミスは起動時のエラーとしてではなく、エンドポイントに対する `NET003` の TLS 失敗として現れます。バンドルを修正してから doctor を再実行してください。

## プロキシ

エアギャップ化された CLI は、標準的な Devin CLI と同じ方法で送信プロキシを処理します。デフォルト (`"mode": "system"`) では、環境変数 `HTTP_PROXY`、`HTTPS_PROXY`、`ALL_PROXY`、`NO_PROXY` と、オペレーティングシステムの PAC/自動プロキシ設定に従います。特定のプロキシを強制的に利用する場合や、プロキシを完全にバイパスする場合は、ユーザー設定ファイル (共有の Devin 設定ディレクトリ内の `config.json`。[ディスク上のフォーマット](/ja/federal/air-gapped/on-disk-formats)を参照) に `proxy` ブロックを追加します。

```json theme={null}
{
  "proxy": {
    "mode": "manual",
    "url": "http://proxy.corp.example:8080",
    "no_proxy": "localhost,127.0.0.1,.corp.example"
  }
}
```

| `mode` | 動作 |
| - | - |
| `"system"` (デフォルト) | プロキシ関連の環境変数とプラットフォームの PAC 設定を利用します。 |
| `"manual"` | すべてのトラフィックを `url` (`http://`、`https://`、または `socks5://`) 経由で送信します。環境変数で指定されたプロキシは無視されます。 |
| `"off"` | 直接接続し、プロキシ設定はすべて無視します。 |

`no_proxy` はどのモードでも適用され、構文は `NO_PROXY` 環境変数と同じです。ホスト上の全ユーザーを対象にプロキシを設定するには、同じ `proxy` ブロックをマシン全体のポリシーファイル `system.json` (Linux では `/etc/devin/system.json`、macOS では `/Library/Application Support/Devin/system.json`、Windows では `C:\ProgramData\Devin\system.json`) に記述します。両方のファイルで `proxy` が定義されている場合、ユーザー側の定義を削除するまで CLI は起動しません。全オプションの詳細については [CLI 設定ファイルリファレンス](/ja/cli/reference/configuration/config-file#proxy)を参照してください。

TLS を終端し、独自の CA でトラフィックを再署名するプロキシは、プライベート CA として扱われます。そのプロキシの証明書を `DEVIN_CA_BUNDLE` に追加してください。プロキシを経由しても、接続先はこのページの冒頭に記載された宛先に限られます。プロキシによって変わるのは経路だけで、接続先は変わりません。

## タイムアウト

| 接続 | タイムアウト |
| - | - |
| `devin airgap doctor` のプローブ (接続および全体) | リクエストあたり 10 秒 |
| IdP への SSO (シングルサインオン) リクエスト (検出、トークン、JWKS) | リクエストあたり 30 秒 |
| 推論リクエスト | 接続は 30 秒。データを受信しない状態が 300 秒続くと読み取りを中止 |

タイムアウトを超えたプローブは `NET005` として報告されます。

## NET コード

`devin airgap doctor` は、失敗したエンドポイントのプローブごとに、以下のいずれかのコードを付与します。これらはサポートへの問い合わせ時にも目にするコードです。全コードの一覧は [エラーコード](/ja/federal/air-gapped/error-codes) ページを参照してください。

| コード | 意味 | 対処法 |
| - | - | - |
| `NET001` | エンドポイントホストの DNS 名前解決に失敗しました。 | models ファイルまたは auth ファイル内のホスト名を確認し、ワークステーションのリゾルバーがその名前を解決できることを確認してください (`getent hosts <host>` または `dig <host>`) 。 |
| `NET002` | TCP 接続を確立できませんでした (拒否、リセット、ルーティング不可) 。 | ワークステーションからそのポートに接続できること、およびファイアウォールやプロキシがその通信を許可していることを確認してください。 |
| `NET003` | TLS ハンドシェイクに失敗しました (証明書が信頼されていない、期限切れ、または名前が一致しない) 。doctor は、取得できた場合はサーバーが提示した証明書 (`subject`、`issuer`、`expires`) と、`DEVIN_CA_BUNDLE` が有効だったかどうかを出力に追記します。 | 発行者が自組織のプライベート CA である場合は、`DEVIN_CA_BUNDLE` を設定または修正してください。証明書が期限切れの場合や名前が URL と一致しない場合は、サーバー証明書を修正してください。 |
| `NET004` | エンドポイントが 401/403 以外のエラーを示す HTTP ステータスを返しました。`GET {base_url}/models` に対する `404` は警告として扱われます。OpenAI 互換サーバーの中には `/models` を実装していないものがあるためです。 | `base_url` に正しいプレフィックス (通常は `/v1`) が含まれていること、およびサーバーが正常に稼働していることを確認してください。 |
| `NET005` | リクエストがタイムアウトしました。 | ネットワーク遅延を確認し、エンドポイントが過負荷になっていないことを確認してください。`/models` のプローブは 10 秒以内に応答する必要があります。 |
| `NET006` | エンドポイントが設定済みの認証情報を拒否しました (HTTP 401/403) 。 | モデルの `api_key.env` で指定された環境変数の値を確認してください。 |

## 関連する CFG コード

| コード | 意味 | 対処法 |
| - | - | - |
| `CFG002` | モデルの `api_key.env` で指定された環境変数が、エージェントの環境に設定されていません。Doctor はそのモデルのネットワークプローブをスキップします。 | エージェントを起動する環境でその変数をエクスポートしてください。詳しくは[models ファイル](/ja/federal/air-gapped/models-file#api-key-environment-variables)を参照してください。 |
| `CFG004` | `DEVIN_CA_BUNDLE` ファイルが存在しないか、読み取れないか、有効な PEM 証明書が含まれていません。 | パスまたはファイルの内容を修正してください。解析エラーの詳細はメッセージに表示されます。 |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.