3.6 KiB
title, description, tags, date, lastmod, type, category, status
| title | description | tags | date | lastmod | type | category | status | ||
|---|---|---|---|---|---|---|---|---|---|
| Installer un serveur de cache APT avec https | 2026-02-28 01:25 | 2026-02-28 01:28 |
|
|
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.
-
Le serveur de cache possède sa propre Autorité de Certification (CA).
-
Vous installez ce certificat CA sur tous vos clients comme "Autorité de confiance".
-
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.pemcontient 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. |