https://github.com/mindsolve/ng-certificate-manager
A simple script for centralised certificate management
https://github.com/mindsolve/ng-certificate-manager
Last synced: 8 months ago
JSON representation
A simple script for centralised certificate management
- Host: GitHub
- URL: https://github.com/mindsolve/ng-certificate-manager
- Owner: mindsolve
- Created: 2022-11-15T20:52:13.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-01-17T20:34:02.000Z (over 2 years ago)
- Last Synced: 2025-01-19T17:26:29.191Z (over 1 year ago)
- Language: Shell
- Size: 14.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Next Generation Certificate Manager
Der `ng-certificate-manager` beantragt, verwaltet und verteilt Zertifikate,
z.B. von Let's Encrypt an Hosts und Dienste, welche diese benötigen.
Im Falle von DNS-Validierung ermöglicht es, die dafür notwendigen Zugangsdaten
nur auf einem Server zu hinterlegen, welcher dann die ausgestellten Zertifikate weiterverteilt.
Auch in anderen Fällen kann die zentralisierte Verwaltung und Beantragung nützlich sein.
Dadurch muss nicht mehr auf jedem Host, der ein Zertifikat braucht, certbot konfiguriert werden,
sondern nur noch ein simples Deployment-Skript ("plugin") auf dem Server, der den
`ng-certificate-manager` ausführt hinzugefügt werden.
### Getting Started:
1. Kopiere die Datei `config.example.yml` nach `config.yml`
2. Befülle die Datei entsprechend der Kommentare
3. Führe das Skript manuell aus, um die Konfiguration zu testen
4. [Erstelle ein Deployment-Skript/Plugin, um das Zertifikat zu verteilen](#eigene-pluginsdeployment-skripte)
5. Füge das Skript in die Crontab ein, oder erstelle eine SystemD Timer Unit.
Es ist nicht nötig, das Skript öfter als täglich aufzurufen.
### Funktionsweise:
Der `ng-certificate-manager` führt nach der erfolgten Ausstellung/Verlängerung
alle **in der Konfig festgelegten** Dateien/Programme im Ordner `cert-plugins` in konfigurierter Reihenfolge aus.
***Hinweis:** Alle ausführbaren Textdateien (alle Skripte, z.B. Python, Bash usw.)
**müssen** eine valide Shebang haben. Ansonsten weiß das System nicht, mit welchem
Interpreter das Skript ausgeführt werden muss (siehe https://realguess.net/2013/11/17/why-shebang/).*
### Eigene Plugins/Deployment-Skripte:
Erstelle eine ausführbare Datei, z.B. ein Bash-Skript im Ordner `cert-plugins`.
Diesem Plugin stehen zwei Arten von Informationen zur Verfügung:
1. **Generell verfügbare Informationen:**
Diese sind sowohl als Parameter als auch als Umgebungsvariable für das Plugin verfügbar. Folgende Werte werden immer
an ein Plugin übermittelt:
| Parameter Nr. | Umgebungsvariable | Beschreibung |
|---------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | `_CERT_NAME` | Der Name des Zertifikats (`certificate_name` in der `config.yml`) |
| 2 | `_CERT_FULLCHAIN`
~~`_FULLCERT`~~ | Der Pfad zur `fullchain.pem`, dem Zertifikat incl. der Zertifikatshierarchie.
Der veraltete Name `_FULLCERT` wird aus Kompatibilitätsgründen weiterhin gesetzt. |
| 3 | `_CERT_KEY`
~~`_KEY`~~ | Der Pfad zur `privkey.pem`, dem privaten Schlüssel zum Zertifikat.
Der veraltete Name `_KEY` wird aus Kompatibilitätsgründen weiterhin gesetzt. |
2. **Individuelle Einstellungen:**
Diese werden in der Konfigurationsdatei beim jeweiligen Plugin-Aufruf mit dem Schlüssel `settings` gesetzt.
Die gesetzen Werte sind für das Plugin als Umgebungsvariablen verfügbar. So können wiederverwendbare
Deployment-Skripte/Plugins erstellt werden, welche sich sonst nur durch Kleinigkeiten unterscheiden würden (z.B.
einem Hostnamen bei Dateitransfers).
Beispiele für Deployment-Skripte bzw. Plugins befinden sich in `example-cert-plugins`.