---
title: Installer un serveur de cache APT avec https
description:
tags: []
date: 2026-02-28 01:25
lastmod: 2026-02-28 01:28
type:
  - article
category:
  - "[[Guide]]"
status: brouillon
---
Pour mettre en cache du contenu **HTTPS** (et donc réellement économiser de la bande passante sur des dépôts comme Docker, Nodesource ou Google Cloud), la méthode "PassThrough" ne suffit plus car elle ne fait que laisser passer le flux chiffré sans le lire.

Pour que le serveur de cache puisse lire et stocker le contenu, il doit intercepter la connexion. Voici comment configurer une architecture **Man-in-the-Middle (MitM)** propre et sécurisée pour votre infrastructure locale.

---

## Le Concept : Proxy HTTPS Transparent

Dans ce scénario, nous allons utiliser **Squid** avec la fonctionnalité **SSL Peek-and-Splice**.

1. Le serveur de cache possède sa propre **Autorité de Certification (CA)**.
    
2. Vous installez ce certificat CA sur tous vos clients comme "Autorité de confiance".
    
3. Lorsqu'un client demande un paquet via HTTPS, le serveur génère un certificat à la volée, déchiffre la requête, vérifie son cache, et rechiffre le flux vers le client.
    

---

## 1. Génération du certificat CA auto-signé

Sur votre serveur de cache, générez la clé et le certificat qui serviront à signer les requêtes interceptées :

Bash

```
# Créer un dossier pour les certificats
sudo mkdir -p /etc/squid/ssl_cert
sudo openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 \
  -extensions v3_ca -keyout /etc/squid/ssl_cert/myCA.pem  \
  -out /etc/squid/ssl_cert/myCA.pem
```

> **Important :** Le fichier `myCA.pem` contient votre clé privée. Protégez-le avec des permissions strictes (`chmod 400`).

---

## 2. Configuration de Squid (Serveur de Cache)

Installez Squid avec le support SSL (vérifiez que votre version supporte `--with-openssl`) :

Bash

```
sudo apt update && sudo apt install squid -y
```

Modifiez la configuration `/etc/squid/squid.conf` pour inclure ces directives :

Plaintext

```
# Port d'écoute avec interception SSL
http_port 3128 ssl-bump \
  cert=/etc/squid/ssl_cert/myCA.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=4MB

# Définition de la stratégie d'interception
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all

# Cache des fichiers (ajustez la taille selon vos besoins)
cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size 1024 MB
```

Initialisez la base de données des certificats dynamiques :

Bash

```
sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 4MB
sudo chown -R proxy:proxy /var/lib/squid/ssl_db
sudo systemctl restart squid
```

---

## 3. Configuration du Client (Étape CRUCIALE)

Sans cette étape, vos clients bloqueront la connexion pour "tentative d'interception" (HSTS/SSL Pinning).

### A. Importer le certificat CA

Copiez le fichier `myCA.pem` du serveur vers le client, puis :

Bash

```
sudo cp myCA.pem /usr/local/share/ca-certificates/my-proxy-ca.crt
sudo update-ca-certificates
```

### B. Configurer APT pour utiliser le proxy

Éditez `/etc/apt/apt.conf.d/00proxy` :

Plaintext

```
Acquire::http::Proxy "http://IP_SERVEUR:3128";
Acquire::https::Proxy "http://IP_SERVEUR:3128";
```

---

## Avantages et Risques

|**Avantages**|**Risques / Inconvénients**|
|---|---|
|**Vraie mise en cache** du HTTPS (Gain de temps massif).|**Point de défaillance unique** pour la sécurité.|
|Réduction drastique de la bande passante externe.|Nécessite d'installer le certificat sur **chaque** client.|
|Contrôle total sur les paquets entrant dans le réseau.|Incompatible avec certains dépôts qui utilisent le _Certificate Pinning_.|

