fix: sécurité — remote SSH + vérification GPG à l'installation
- Remote origin passé en SSH (token retiré de l'URL) - make install dépend de make verify (vérifie la signature GPG du dernier tag) - Sans tag signé : avertissement non bloquant (bootstrap) - Avec tag signé et clé invalide : erreur bloquante - DEVELOPER.md : instructions pour signer les tags de release - README.md : mention de l'import de clé GPG Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+18
-1
@@ -46,4 +46,21 @@ Chaque script doit avoir une fiche `local/share/doc/scripts-bash/<nom>.1.md` ave
|
|||||||
|
|
||||||
### Remote Git
|
### Remote Git
|
||||||
|
|
||||||
Le remote `origin` utilise HTTPS avec le token Gitea intégré dans l'URL (`https://user:TOKEN@git.abonnel.fr/...`).
|
Le remote `origin` utilise SSH (`git@git.abonnel.fr:cedricAbonnel/scripts-bash.git`).
|
||||||
|
Les credentials ne transitent jamais dans l'URL.
|
||||||
|
|
||||||
|
### Signature GPG des releases
|
||||||
|
|
||||||
|
`make install` vérifie la signature GPG du dernier tag avant d'installer.
|
||||||
|
Chaque release doit être taguée et signée :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git tag -s v1.x -m "Release v1.x"
|
||||||
|
git push origin v1.x
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour que les utilisateurs puissent vérifier, ils doivent importer la clé publique du développeur :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --keyserver keys.openpgp.org --recv-keys <ID_CLÉ>
|
||||||
|
```
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ DOC_SRC := $(wildcard local/share/doc/scripts-bash/*.md)
|
|||||||
MAN_PAGES := $(patsubst local/share/doc/scripts-bash/%.md,local/share/man/man1/%,$(DOC_SRC))
|
MAN_PAGES := $(patsubst local/share/doc/scripts-bash/%.md,local/share/man/man1/%,$(DOC_SRC))
|
||||||
|
|
||||||
# ──────────────────────────────────────────────────────────────
|
# ──────────────────────────────────────────────────────────────
|
||||||
.PHONY: all build install uninstall clean
|
.PHONY: all build install uninstall clean verify
|
||||||
|
|
||||||
## Cible par défaut : installe tout dans ~/.local/
|
## Cible par défaut : installe tout dans ~/.local/
|
||||||
all: install
|
all: install
|
||||||
@@ -33,8 +33,23 @@ local/share/man/man1/%: local/share/doc/scripts-bash/%.md
|
|||||||
pandoc -s $< -t man -o $@
|
pandoc -s $< -t man -o $@
|
||||||
@echo " MAN $@"
|
@echo " MAN $@"
|
||||||
|
|
||||||
|
## verify : vérifie la signature GPG du dernier tag avant d'installer
|
||||||
|
verify:
|
||||||
|
@tag=$$(git describe --tags --abbrev=0 2>/dev/null) || { \
|
||||||
|
echo " GPG Avertissement : aucun tag signé trouvé — intégrité non vérifiée."; \
|
||||||
|
echo " Importez la clé publique du développeur et vérifiez avec : git tag -v <tag>"; \
|
||||||
|
exit 0; \
|
||||||
|
}; \
|
||||||
|
if git verify-tag "$$tag" 2>/dev/null; then \
|
||||||
|
echo " GPG $$tag : signature valide"; \
|
||||||
|
else \
|
||||||
|
echo " GPG Erreur : signature invalide pour le tag $$tag"; \
|
||||||
|
echo " Importez la clé publique du développeur avant d'installer."; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
## install : déploie tout dans ~/.local/ (aucune dépendance externe)
|
## install : déploie tout dans ~/.local/ (aucune dépendance externe)
|
||||||
install:
|
install: verify
|
||||||
@[ -d "local/bin" ] || { echo "Erreur : lancer depuis la racine du projet scripts-bash"; exit 1; }
|
@[ -d "local/bin" ] || { echo "Erreur : lancer depuis la racine du projet scripts-bash"; exit 1; }
|
||||||
@mkdir -p "$(INSTALL_BIN)" "$(INSTALL_MAN)" "$(INSTALL_DOC)" "$(INSTALL_YTDLL)/lib"
|
@mkdir -p "$(INSTALL_BIN)" "$(INSTALL_MAN)" "$(INSTALL_DOC)" "$(INSTALL_YTDLL)/lib"
|
||||||
@for f in $(SCRIPTS_SH); do \
|
@for f in $(SCRIPTS_SH); do \
|
||||||
|
|||||||
@@ -10,8 +10,15 @@ cd scripts-bash
|
|||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
`make install` copie les scripts dans `~/.local/bin`, les pages man dans `~/.local/share/man/man1`,
|
`make install` vérifie la signature GPG du dernier tag, copie les scripts dans `~/.local/bin`,
|
||||||
et ajoute `~/.local/bin` au `PATH` dans `~/.bashrc` si nécessaire. Rechargez votre terminal après l'installation.
|
les pages man dans `~/.local/share/man/man1`, et ajoute `~/.local/bin` au `PATH` dans `~/.bashrc`
|
||||||
|
si nécessaire. Rechargez votre terminal après l'installation.
|
||||||
|
|
||||||
|
Pour que la vérification GPG fonctionne, importez la clé publique du développeur au préalable :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gpg --keyserver keys.openpgp.org --recv-keys <ID_CLÉ>
|
||||||
|
```
|
||||||
|
|
||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user