mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
First commit
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
# generate-node-cert.sh — génère une clé + un certificat client mTLS pour
|
||||
# un noeud, signé par la CA privée du master (voir master-ca-init.sh).
|
||||
#
|
||||
# Flux MANUEL (clé + CSR + signature générées ici, au même endroit) :
|
||||
# réservé à l'usage local sur le master lui-même (ex. certificat
|
||||
# master-internal, généré par install.sh::install-master sans jamais
|
||||
# passer par le réseau). Pour un noeud DISTANT, préférer le flux par
|
||||
# jeton (manage.py create_join_token puis sudo ./install.sh join sur le
|
||||
# noeud, voir ROADMAP.md) : la clé y est générée SUR le noeud et ne
|
||||
# transite jamais par le réseau, contrairement à ce script qui la génère
|
||||
# ici puis suppose qu'elle sera copiée à la main vers le noeud.
|
||||
#
|
||||
# Usage : sudo ./generate-node-cert.sh <nom_du_noeud> [répertoire_sortie]
|
||||
# Le nom du noeud devient le CN du certificat, donc son identité MQTT côté
|
||||
# master (use_identity_as_username) — sert de base aux ACL par noeud.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
NODE_NAME="${1:?Usage: $0 <nom_du_noeud> [répertoire_sortie]}"
|
||||
CA_DIR="${CA_DIR:-/etc/mosquitto/master-ca}"
|
||||
OUT_DIR="${2:-./certs/$NODE_NAME}"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
if [ ! -f "$CA_DIR/ca.key" ]; then
|
||||
echo "CA introuvable dans $CA_DIR — lancer master-ca-init.sh d'abord." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install -d "$OUT_DIR"
|
||||
openssl genrsa -out "$OUT_DIR/$NODE_NAME.key" 2048
|
||||
openssl req -new -key "$OUT_DIR/$NODE_NAME.key" -subj "/CN=$NODE_NAME" -out "$OUT_DIR/$NODE_NAME.csr"
|
||||
# Signature + entitlement ACL + restart mosquitto : logique partagée avec
|
||||
# l'endpoint /api/join/ (banevents/views.py::join_node), voir
|
||||
# sign-node-csr.sh — un seul chemin de code qui touche ca.key.
|
||||
CA_DIR="$CA_DIR" "$SCRIPT_DIR/sign-node-csr.sh" "$NODE_NAME" "$OUT_DIR/$NODE_NAME.csr" > "$OUT_DIR/$NODE_NAME.crt"
|
||||
cp "$CA_DIR/ca.crt" "$OUT_DIR/ca.crt"
|
||||
rm "$OUT_DIR/$NODE_NAME.csr"
|
||||
chmod 600 "$OUT_DIR/$NODE_NAME.key"
|
||||
|
||||
echo "Certificat généré dans $OUT_DIR :"
|
||||
echo " - $NODE_NAME.key, $NODE_NAME.crt (ca.crt copié aussi mais pas utilisé par le noeud :"
|
||||
echo " le certificat serveur du master est vérifié via le magasin de CA système)"
|
||||
echo "À copier sur le noeud (ex. emitter/master-tls/) et référencer via"
|
||||
echo "MQTT_MASTER_CLIENT_KEY / MQTT_MASTER_CLIENT_CERT / MQTT_MASTER_NODE_NAME=$NODE_NAME."
|
||||
Reference in New Issue
Block a user