Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Serveur CA LXC Alpine Linux

De Le Wiki de Lug

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