> ## 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.

# Réseau et certificats de Devin en air gap

> Configurez Devin Desktop et la CLI en air gap pour votre réseau : faites approuver une autorité de certification privée avec DEVIN_CA_BUNDLE, utilisez un proxy et résolvez les codes NET et CFG004.

> [!NOTE]
>
> Cette documentation concerne les déploiements fédéraux de Devin. [Retour à la documentation Devin](/fr/get-started/devin-intro)

La CLI et Desktop en air gap se connectent aux endpoints des modèles définis dans votre [fichier de modèles](/fr/federal/air-gapped/models-file), à l’émetteur du fournisseur d’identité indiqué dans votre [fichier d’authentification](/fr/federal/air-gapped/sso), ainsi qu’aux serveurs MCP que vous configurez localement. Cette page présente les exigences de ces connexions vis-à-vis de votre réseau : la confiance TLS, un proxy facultatif et les codes affichés en cas d’échec de connexion.

***

## Exigences TLS

* Chaque `base_url` de modèle ainsi que l'`issuer` SSO doivent utiliser `https://`. Le protocole `http://` non chiffré n'est accepté que pour les hôtes de bouclage (`localhost`, `127.0.0.0/8`, `[::1]`).
* Les certificats sont vérifiés à l'aide du magasin de certificats de confiance du système d'exploitation (Security.framework sur macOS, le magasin d'autorités de certification du système sur Linux). Si vos endpoints sont signés par une autorité de certification déjà installée sur le poste de travail, aucune configuration supplémentaire n'est nécessaire.
* Si vos endpoints sont signés par une autorité de certification privée qui ne figure *pas* dans le magasin de certificats de confiance du système d'exploitation, ajoutez-la via `DEVIN_CA_BUNDLE` comme indiqué ci-dessous. La CLI ne désactive jamais la vérification des certificats.

## Faire confiance à une autorité de certification privée avec `DEVIN_CA_BUNDLE`

`DEVIN_CA_BUNDLE` désigne un fichier PEM dont les certificats sont approuvés **en plus** de ceux du magasin de certificats de confiance du système d’exploitation. Il s’applique aux requêtes d’inférence, aux sondes de `devin airgap doctor` et à toutes les requêtes que la CLI envoie à votre IdP lors de la connexion SSO (authentification unique) et de la revalidation.

**1. Assembler le paquet**

Regroupez les certificats racine (et, le cas échéant, intermédiaires) de votre autorité de certification privée dans un seul fichier PEM. Le fichier peut contenir plusieurs blocs `-----BEGIN CERTIFICATE-----`.

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

Vos endpoints n’ont pas besoin de partager le même certificat ni la même autorité de certification. Un seul paquet s’applique à l’ensemble du processus de l’agent et à toutes ses connexions : si vos endpoints sont signés par des autorités de certification privées différentes, concaténez-les toutes dans le même fichier :

```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
```

Avec ce paquet, `https://vllm.corp.example` (signé par `corp-root-ca`), `https://models.ml.example` (signé par `ml-platform-ca`) et votre IdP (signé par `idp-root-ca`) sont tous approuvés. Les endpoints signés par une autorité de certification déjà présente dans le magasin de certificats de confiance du système d’exploitation ne nécessitent aucune entrée. Le fichier des modèles ne comporte aucun champ de certificat ou TLS par modèle, et il n’est pas possible d’utiliser un paquet distinct par endpoint.

**2. Exporter la variable dans l’environnement de l’agent**

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

La variable doit être visible par le processus qui exécute l’agent. Pour la CLI dans le terminal, définissez-la dans le profil de shell de chaque utilisateur. Pour Desktop, procédez comme pour les variables de clé d’API des modèles (voir [Variables d’environnement des clés d’API](/fr/federal/air-gapped/models-file#api-key-environment-variables)) : ajoutez-la au paramètre `devin.acp.agentEnv` ou, sous macOS, utilisez `launchctl setenv DEVIN_CA_BUNDLE /etc/devin/ca-bundle.pem` (`open` ne transmet pas l’environnement de votre shell à l’application).

**3. Vérifier avec 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)
…
```

Le suffixe `trusted only via DEVIN_CA_BUNDLE` confirme que c’est bien grâce au paquet que l’endpoint est approuvé : doctor réessaie chaque endpoint joignable avec le seul magasin de certificats de confiance du système d’exploitation et indique si cette tentative échoue au niveau TLS. Si la variable n’est pas définie, la ligne du paquet d’autorités de certification affiche `not configured (OS trust store only; set DEVIN_CA_BUNDLE to add a private CA)`.

Si le fichier est illisible, contient une section PEM invalide ou ne contient aucun certificat, doctor signale l’échec de la vérification **CA bundle** avec `CFG004` et le message de l’analyseur (par exemple `failed to read CA bundle '/etc/devin/ca-bundle.pem': No such file or directory`). À l’exécution, ce même problème n’est pas bloquant : la CLI affiche une ligne `warning: ignoring DEVIN_CA_BUNDLE: …` et se rabat sur le magasin de certificats de confiance du système d’exploitation. Une faute de frappe dans le chemin se manifeste donc par des échecs TLS `NET003` sur vos endpoints, et non par une erreur au démarrage. Corrigez le paquet, puis relancez doctor.

## Proxy

La CLI en air gap gère le proxy sortant de la même manière que la Devin CLI Standard. Par défaut (`"mode": "system"`), elle prend en compte les variables d’environnement `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` et `NO_PROXY`, ainsi que les paramètres PAC/proxy automatique du système d’exploitation. Pour imposer un proxy spécifique ou contourner complètement les proxys, ajoutez un bloc `proxy` au fichier de configuration utilisateur (`config.json` dans le répertoire de configuration partagé de Devin ; voir [Formats sur disque](/fr/federal/air-gapped/on-disk-formats)) :

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

| `mode` | Comportement |
| - | - |
| `"system"` (par défaut) | Utilise les variables d’environnement de proxy et les paramètres PAC de la plateforme. |
| `"manual"` | Fait transiter tout le trafic par `url` (`http://`, `https://` ou `socks5://`). Les proxys définis par variables d’environnement sont ignorés. |
| `"off"` | Connexion directe ; tous les paramètres du proxy sont ignorés. |

`no_proxy` s’applique dans tous les modes et utilise la même syntaxe que la variable d’environnement `NO_PROXY`. Pour définir le proxy pour tous les utilisateurs d’un hôte, placez le même bloc `proxy` dans le fichier de stratégie à l’échelle de la machine `system.json` (`/etc/devin/system.json` sous Linux, `/Library/Application Support/Devin/system.json` sous macOS, `C:\ProgramData\Devin\system.json` sous Windows) ; si les deux fichiers définissent `proxy`, la CLI refuse de démarrer tant que vous n’avez pas supprimé la copie de niveau utilisateur. La référence complète des options se trouve dans la [référence du fichier de configuration de la CLI](/fr/cli/reference/configuration/config-file#proxy).

Un proxy qui termine la connexion TLS et re-signe le trafic avec sa propre autorité de certification (CA) est considéré comme une CA privée : ajoutez son certificat à `DEVIN_CA_BUNDLE`. Les connexions restent limitées aux destinations répertoriées en haut de cette page ; le proxy modifie le chemin emprunté, pas l’ensemble des destinations.

## Délais d’expiration

| Connexion | Délai d’expiration |
| - | - |
| Sondes `devin airgap doctor` (connexion et durée totale) | 10 secondes par requête |
| Requêtes SSO vers l’IdP (découverte, token, JWKS) | 30 secondes par requête |
| Requêtes d’inférence | 30 secondes pour établir la connexion ; la lecture est abandonnée après 300 secondes sans réception de données |

Une sonde qui dépasse son délai d’expiration est signalée par le code `NET005`.

## Codes NET

`devin airgap doctor` associe l’un de ces codes à chaque sonde d’endpoint en échec. Ce sont également les codes que vous verrez dans les demandes d’assistance. Le catalogue complet est disponible sur la page [Codes d’erreur](/fr/federal/air-gapped/error-codes).

| Code | Signification | Que faire |
| - | - | - |
| `NET001` | La résolution DNS de l’hôte de l’endpoint a échoué. | Vérifiez le hostname dans le fichier des modèles ou le fichier d’authentification, et assurez-vous que le résolveur du poste de travail parvient à le résoudre (`getent hosts <host>` ou `dig <host>`). |
| `NET002` | Impossible d’établir la connexion TCP (connexion refusée, réinitialisée ou non routable). | Vérifiez que le port est accessible depuis le poste de travail et qu’aucun pare-feu ni proxy ne le bloque. |
| `NET003` | La négociation TLS a échoué (certificat non approuvé, expiré ou non concordant). Lorsqu’il peut l’obtenir, Doctor ajoute le certificat présenté par le serveur (`subject`, `issuer`, `expires`) et indique si `DEVIN_CA_BUNDLE` était pris en compte. | Si l’émetteur est votre autorité de certification privée, définissez ou corrigez `DEVIN_CA_BUNDLE`. Si le certificat a expiré ou si son nom ne correspond pas à l’URL, corrigez le certificat du serveur. |
| `NET004` | L’endpoint a renvoyé un statut HTTP d’échec autre que 401/403. Une erreur `404` sur `GET {base_url}/models` ne génère qu’un avertissement, car certains serveurs compatibles OpenAI n’implémentent pas `/models`. | Vérifiez que `base_url` inclut le bon préfixe (généralement `/v1`) et que le serveur fonctionne correctement. |
| `NET005` | Le délai de la requête a expiré. | Vérifiez la latence réseau et assurez-vous que l’endpoint n’est pas surchargé ; la sonde `/models` doit obtenir une réponse en moins de 10 secondes. |
| `NET006` | L’endpoint a rejeté les credentials configurés (HTTP 401/403). | Vérifiez la valeur de la variable d’environnement indiquée par le champ `api_key.env` du modèle. |

## Codes CFG associés

| Code | Signification | Que faire |
| - | - | - |
| `CFG002` | La variable d’environnement indiquée par le champ `api_key.env` d’un modèle n’est pas définie dans l’environnement de l’agent. Doctor ignore alors les sondes réseau de ce modèle. | Exportez la variable dans l’environnement depuis lequel l’agent est lancé ; consultez [Fichier des modèles](/fr/federal/air-gapped/models-file#api-key-environment-variables). |
| `CFG004` | Le fichier `DEVIN_CA_BUNDLE` est introuvable, illisible ou ne contient aucun certificat PEM valide. | Corrigez le chemin ou le contenu du fichier ; le message précise l’erreur d’analyse. |


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