Serveur CA LXC Alpine Linux
Autres actions
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 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
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