Letsencrypt sur Mac OS X Server

Installation du système de certificat Let’s Encrypt sur Mac OS X Server :

Scripts de génération et renouvellement

Installation du script de l’université de Stutggart (CIP Pool Physik - Universität Stuttgart) qui utilise le sous-dépôt dehydrated de Lukas Schauer plutôt bien fichu, dans un dossier de l’administrateur (par exemple) :

sudo git clone --recursive https://github.com/physcip/letsencrypt-mac.git

Ensuite, pour éviter les problèmes de chemins non définis pour accéder à serveradmin, j’ai légèrement modifié les deux scripts run.sh et hooks.sh où j’ai ajouté la ligne suivante au début :

srvradm="/Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin"

Puis j’ai remplacé toutes les occurences de serveradmin par $srvradm

Idem pour certupdate dans le script hooks.sh :

certupd="/Applications/Server.app/Contents/ServerRoot/usr/sbin/certupdate"

D’autre part, histoire d’avoir des journaux un peu plus parlants, j’ai ajouté la date courante dans les éléments affichés, ligne 15 de run.sh qui devient donc :

echo $(date) $serverName $serverAliases $certificate $documentRoot

J’ai ajouté le $(date) entre le echo et le $serverName.

Mise en place du renouvellement automatique

Pour ça il faut créer un fichier com.my.letsencrypt.plist dans le répertoire /Library/LaunchDaemon et y placer ce qui suit :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.my.letsencrypt</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/bibi/letsencrypt-mac/run.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>43200</integer>
	<key>StandardOutPath</key>
	<string>/var/log/letsencrypt.log</string>
	<key>StandardErrorPath</key>
	<string>/var/log/letsencrypt-err.log</string>
</dict>
</plist>

En corrigeant au passage le chemin d’accès au script run.sh (ligne 9).

Puis il suffit de charger le démon comme d’habitude sur Mac. Personnellement j’utilise l’application LaunchControl, plutôt pratique, qui permet de lister, charger, modifier, tester, … les différents agents et démons du système.

À noter : le script est lancé toutes les 12 heures.

Utilisation des certificats

Ensuite il suffit de lancer une première fois le script run.sh (avec un petit sudo) pour qu’il prenne en compte tous les sites définis via l’application Server d’Apple.

Une fois les certificats créés ou renouvelés, il suffit de les sélectionner une fois pour toute dans l’application Server et voilà \o/

Remarques

  • Pour que ça fonctionne il faut bien évidemment que le ou les sites soit accessibles depuis l’extérieur !
  • D’autre part les certificats sont importés dans la keychain de Mac OS X, donc utilisables immédiatement et sans manipulations supplémentaires.
  • On peut vérifier leurs présences dans le dossier /etc/certificates
  • Les journaux de renouvellement sont bien évidemment accessibles (et définis dans le fichier .plist du descripteur de démon, voir plus haut).

À compléter si nécessaire…

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/13415

Haut de page