« Serveur CA LXC Alpine Linux » : différence entre les versions
Autres actions
| (8 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 123 : | Ligne 123 : | ||
Créer un fichier d’extensions : | Créer un fichier d’extensions : | ||
# vi server.ext | # vi server.ext | ||
----- | |||
Contenu : | Contenu pour un accès par IP : | ||
authorityKeyIdentifier=keyid,issuer | |||
basicConstraints=CA:FALSE | |||
keyUsage=digitalSignature,keyEncipherment | |||
extendedKeyUsage=serverAuth | |||
subjectAltName=IP:<font color = blue>IP_SERVEUR</font> | |||
----- | |||
Contenu pour un accès par nom DNS : | |||
authorityKeyIdentifier=keyid,issuer | authorityKeyIdentifier=keyid,issuer | ||
basicConstraints=CA:FALSE | basicConstraints=CA:FALSE | ||
keyUsage=digitalSignature,keyEncipherment | keyUsage=digitalSignature,keyEncipherment | ||
extendedKeyUsage=serverAuth | extendedKeyUsage=serverAuth | ||
subjectAltName= | subjectAltName=DNS:<font color = blue>NOM_DNS</font> | ||
----- | |||
Créer la demande de certificat : | Créer la demande de certificat : | ||
# openssl req -new -key server.key -out server.csr \ | # openssl req -new -key server.key -out server.csr \ | ||
-subj "/CN=<font color = blue> | -subj "/CN=<font color = blue>IP_SERVEUR_OU_NOM_DNS</font>" | ||
Signer le certificat : | Signer le certificat : | ||
| Ligne 150 : | Ligne 157 : | ||
Les fichiers deviennent alors accessibles, par exemple : | Les fichiers deviennent alors accessibles, par exemple : | ||
<nowiki>http://</nowiki>IP_DU_LXC_CA:8081/server.key | <nowiki>http://</nowiki><font color = blue>IP_DU_LXC_CA</font>:8081/server.key | ||
<nowiki>http://</nowiki>IP_DU_LXC_CA:8081/server.crt | <nowiki>http://</nowiki><font color = blue>IP_DU_LXC_CA</font>:8081/server.crt | ||
== 3. Sur le serveur cible == | == 3. Sur le serveur cible == | ||
| Ligne 159 : | Ligne 166 : | ||
Télécharger les fichiers : | Télécharger les fichiers : | ||
# wget -O /etc/<font color = blue>mon_projet</font>/ssl/server.key http://IP_DU_LXC_CA:8081/server.key | # wget -O /etc/<font color = blue>mon_projet</font>/ssl/server.key <nowiki>http://</nowiki><font color = blue>IP_DU_LXC_CA</font>:8081/server.key | ||
# wget -O /etc/<font color = blue>mon_projet</font>/ssl/server.crt http://IP_DU_LXC_CA:8081/server.crt | # wget -O /etc/<font color = blue>mon_projet</font>/ssl/server.crt <nowiki>http://</nowiki><font color = blue>IP_DU_LXC_CA</font>:8081/server.crt | ||
Corriger les permissions : | Corriger les permissions : | ||
| Ligne 168 : | Ligne 175 : | ||
== 4. Nettoyage == | == 4. Nettoyage == | ||
Dès que les fichiers ont été récupérés sur le serveur cible, arrêter BusyBox HTTPD sur le LXC CA et supprimer les fichiers temporaires : | Dès que les fichiers ont été récupérés sur le serveur cible, arrêter BusyBox HTTPD sur le LXC CA et supprimer les fichiers temporaires : | ||
{{Méta bandeau | |||
| niveau = information | |||
# rm - | | icône = information | ||
| texte = | |||
Si BusyBox HTTPD a été lancé manuellement avec l’option <code>-f</code>, il faut d’abord l’arrêter avec <code>Ctrl+C</code> avant de supprimer le dossier temporaire. | |||
}} | |||
# rm -r /tmp/ca-tmp | |||
Dernière version du 3 mai 2026 à 14:42
Ce LXC permet d’héberger une petite autorité de certification locale (CA) pour le réseau interne.
Il sert à :
- signer les certificats TLS des services locaux ;
- distribuer le certificat public de la CA aux machines clientes ;
- centraliser la gestion des certificats ;
- obtenir un HTTPS propre sur le réseau local.
Prérequis
Pour une petite autorité de certification locale, un LXC très léger suffit :
- 1 vCPU
- 512 Mo à 1 Go de RAM
- 2 à 4 Go de disque
Installation
Mise à jour du système :
# apk update && apk upgrade
Installation des paquets nécessaires :
# apk add openssl openssh
Créer un dossier dédié à la CA :
# mkdir -p /etc/local-ca # chmod 700 /etc/local-ca # cd /etc/local-ca
Création de la clé privée de la CA :
# openssl genrsa -out local-ca.key 4096 # chmod 600 local-ca.key
Création du certificat public de la CA :
# openssl req -x509 -new -nodes -key local-ca.key -sha256 -days 3650 \ -out local-ca.crt \ -subj "/CN=CA-Locale-Homelab" # chmod 644 local-ca.crt
Pour faciliter l’installation du certificat public sur les machines du réseau local, on peut le rendre disponible via un petit serveur web très léger basé sur BusyBox HTTPD :
# apk add busybox-extras
Créer un dossier de publication :
# mkdir -p /srv/ca-public # cp /etc/local-ca/local-ca.crt /srv/ca-public/ # chmod 755 /srv/ca-public # chmod 644 /srv/ca-public/local-ca.crt
Test manuel du serveur web :
# busybox-extras httpd -f -p 8080 -h /srv/ca-public
Le certificat public devient alors accessible à l’adresse :
http://IP_DU_LXC:8080/local-ca.crt
Créer un petit script de démarrage :
# vi /usr/local/bin/start-ca-httpd.sh
Contenu :
#!/bin/sh exec busybox-extras httpd -f -p 8080 -h /srv/ca-public
Rendre le script exécutable :
# chmod 755 /usr/local/bin/start-ca-httpd.sh
Créer un service OpenRC :
# vi /etc/init.d/ca-httpd
Contenu :
#!/sbin/openrc-run description="BusyBox HTTPD pour la distribution du certificat public de la CA" command="/usr/local/bin/start-ca-httpd.sh" command_background="yes" pidfile="/run/ca-httpd.pid"
Rendre le service exécutable :
# chmod 755 /etc/init.d/ca-httpd
Ajouter au démarrage et lancer :
# rc-update add ca-httpd default # rc-service ca-httpd start
Installation du certificat public sur une machine distante
Debian / Ubuntu
Télécharger le certificat :
- Avec curl :
# curl http://IP_DU_LXC:8080/local-ca.crt -o /usr/local/share/ca-certificates/local-ca.crt
- Avec wget :
# wget -O /usr/local/share/ca-certificates/local-ca.crt http://IP_DU_LXC:8080/local-ca.crt
Mettre à jour le magasin de certificats :
# update-ca-certificates
Alpine Linux
Installer ca-certificates si nécessaire :
# apk update && apk upgrade # apk add ca-certificates
Télécharger le certificat :
- Avec wget :
# wget -O /usr/local/share/ca-certificates/local-ca.crt http://IP_DU_LXC:8080/local-ca.crt
- Avec curl :
# curl http://IP_DU_LXC:8080/local-ca.crt -o /usr/local/share/ca-certificates/local-ca.crt
Mettre à jour le magasin de certificats :
# update-ca-certificates
Méthode de création de certificats simplifiée pour un homelab
Pour éviter l’échange manuel de CSR entre le serveur cible et le LXC CA, il est possible de générer directement la clé privée et le certificat du serveur sur le LXC CA, puis de les rendre disponibles temporairement via BusyBox HTTPD.
Cette méthode est plus simple, mais moins propre du point de vue de la sécurité, car la clé privée du serveur est créée sur le LXC CA et transite sur le réseau local.
1. Sur le LXC CA
Créer un dossier temporaire :
# mkdir -p /tmp/ca-tmp/mon_projet # chmod 700 /tmp/ca-tmp/mon_projet # cd /tmp/ca-tmp/mon_projet
Créer la clé privée du serveur :
# openssl genrsa -out server.key 4096 # chmod 600 server.key
Créer un fichier d’extensions :
# vi server.ext
Contenu pour un accès par IP :
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage=digitalSignature,keyEncipherment extendedKeyUsage=serverAuth subjectAltName=IP:IP_SERVEUR
Contenu pour un accès par nom DNS :
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage=digitalSignature,keyEncipherment extendedKeyUsage=serverAuth subjectAltName=DNS:NOM_DNS
Créer la demande de certificat :
# openssl req -new -key server.key -out server.csr \ -subj "/CN=IP_SERVEUR_OU_NOM_DNS"
Signer le certificat :
# openssl x509 -req -in server.csr \ -CA /etc/local-ca/local-ca.crt \ -CAkey /etc/local-ca/local-ca.key \ -CAcreateserial \ -out server.crt \ -days 825 -sha256 \ -extfile server.ext # chmod 644 server.crt
2. Publication temporaire
Lancer temporairement BusyBox HTTPD :
# busybox-extras httpd -f -p 8081 -h /tmp/ca-tmp/mon_projet
Les fichiers deviennent alors accessibles, par exemple :
http://IP_DU_LXC_CA:8081/server.key http://IP_DU_LXC_CA:8081/server.crt
3. Sur le serveur cible
Créer un dossier de destination :
# mkdir -p /etc/mon_projet/ssl # chmod 700 /etc/mon_projet/ssl
Télécharger les fichiers :
# wget -O /etc/mon_projet/ssl/server.key http://IP_DU_LXC_CA:8081/server.key # wget -O /etc/mon_projet/ssl/server.crt http://IP_DU_LXC_CA:8081/server.crt
Corriger les permissions :
# chmod 600 /etc/mon_projet/ssl/server.key # chmod 644 /etc/mon_projet/ssl/server.crt
4. Nettoyage
Dès que les fichiers ont été récupérés sur le serveur cible, arrêter BusyBox HTTPD sur le LXC CA et supprimer les fichiers temporaires :
# rm -r /tmp/ca-tmp