vault backup: 2026-02-28 01:41:39
This commit is contained in:
127
articles/2026/Installer un serveur de cache APT avec https.md
Normal file
127
articles/2026/Installer un serveur de cache APT avec https.md
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
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_.|
|
||||
|
||||
Reference in New Issue
Block a user