Faire le script gestion_certificat.sh
Script qui va être lancé pour créer (et installer dans l'application) un certificat Lets'encrypt ou pour mettre à jour un certificat (par exemple en changeant des variables dans param.conf ou parce-que le certificat a expiré) sans pour autant relancer le script d'installation de l'ecomBox.
Il y a deux types de certificats possibles :
- Un certificat signé par une autorité de certification reconnue (par exemple Lets'encrypt) ==> ce sont les variables : CHEMIN_KEY ET CHEMIN_CERT qui sont utilisées.
- Un certificat auto-signé => Ce sont les quatre variables CODE_PAYS, NOM_PAYS, NOM_REGION="Corse", NOM_ORGANISATION qui sont utilisées.
À noter que dans tous les cas le certificat auto-signé est forcément utilisé pour le registry (qui a besoin de deux certificats différents de celui pour nginx).
Le script va être lancé lorsque l'administrateur veut créer un certificat Lets'encrypt ou mettre à jour un certificat ==> Permettre de lancer le script avec quatre paramètres (utilisation de getops) :
- -c pour la création
- -m pour la mise à jour
- -f création d'un cron pour une mise à jour automatique du certificat (dès lors que ce dernier est périmé). Ce "-f" n'a donc d'utilité qu'une seule fois.
- -h pour l'aide
Création d'un certificat Lets'encrypt
- Création du certificat
- Intégration du chemin vers le certificat et la clé dans param.conf (variable CHEMIN_CERT et CEMIN_KEY)
- Reconfiguration du conteneur docker nginx pour qu'il utilise ce certificat (fonction USE_CERTIFICAT_NGINX()) ==> à noté que le service est relancé dans la fonction.
Mise à jour d'un certificat
- Si on utilise un certificat Lets'encrypt (si les variables CHEMIN_KEY ET CHEMIN_CERT sont renseignées)
- Mise à jour du certificat
- Relance du service nginx du conteneur
- Sinon, après avoir quand même vérifié que des données auraient été modifiées dans le param.conf (même si on peut supposer que c'est le cas puisque le script a été lancé)
- Pour nginx :
- utiliser la fonction CREATE_CERT_NGINX qui vérifie via la fonction VERIF_CERT_NGINX que les données ont bien été modifiées et qui reconfigure le conteneur nginx)
- Pour le registry :
- s'inspirer des fonctions de nginx et faire les fonctions CREATE_CERT_REGISTRY et VERIF_CERT_REGISTRY
Pour la création de certificat, voir s'il est judicieux d'utiliser un conteneur docker : https://blog.eleven-labs.com/fr/https-part-2/