feature/letsEncryptProvider #10

Merged
nick.adam merged 2 commits from feature/letsEncryptProvider into development 2025-11-27 22:54:39 +00:00
Owner

Zusammenfassung: ACME & Let's Encrypt Refaktorisierung

  1. Neue Dateien
    backend/providers/acme_provider.go (182 Zeilen)
    ACMEProvider Interface: Interface für ACME-basierte CAs
    ACMEProviderManager: Singleton-Manager für ACME-Provider
    Funktionen:
    GetACMEManager(): Singleton-Instanz
    RegisterACMEProvider(): Provider registrieren
    GetACMEProvider(): Provider abrufen
    GetACMEProviderConfig(): Konfiguration laden
    SetACMEProviderEnabled(): Provider aktivieren/deaktivieren
    loadAllConfigs(): Lädt Configs aus ./config/providers/
    saveConfig(): Speichert Configs als JSON
    backend/providers/letsencrypt.go (107 Zeilen)
    LetsEncryptProvider: Implementierung für Let's Encrypt
    Unterstützt:
    Staging: letsencrypt-staging
    Production: letsencrypt-production
    Funktionen:
    GetDirectoryURL(): ACME Directory URLs
    GetRenewalInfoURL(): RenewalInfo API URLs
    TestConnection(): Verbindungstest zum ACME-Server
    ValidateConfig(): Konfigurationsvalidierung
    backend/acme_client_context.go (58 Zeilen)
    ACMEClientContext: Kontext-Objekt für ACME-Operationen
    Kapselt:
    Provider-Instanz
    Directory-Endpunkte (NewAccount, NewOrder, NewNonce)
    Directory-URL
    NewACMEClientContext(): Erstellt Context für einen Provider
    Config-Dateien
    backend/config/providers/letsencrypt-staging.json
    { "enabled": true, "settings": {} }
    backend/config/providers/letsencrypt-production.json
    { "enabled": true, "settings": {} }
  2. Geänderte Dateien
    backend/main.go
    Provider-Registrierung (Zeile ~5607-5609):
    acmeManager := providers.GetACMEManager() acmeManager.RegisterACMEProvider(providers.NewLetsEncryptProvider("production")) acmeManager.RegisterACMEProvider(providers.NewLetsEncryptProvider("staging"))
    requestCertificateHandler (Zeile ~2246-2247):
    Verwendet NewACMEClientContext("letsencrypt-staging")
    TODO: Aus FQDN-Konfiguration lesen
    backend/acme_client.go
    RequestCertificate(): Akzeptiert ACMEClientContext statt hardcodierter URLs
    Funktionen verwenden Context-URLs:
    getNonce()
    createAccount()
    createOrder()
    extractTokenFromOrder()
    extractChallengeURLFromOrder()
    activateChallenge()
    cleanupChallenge()
    waitForChallengeValidation()
    waitForOrderReady()
    finalizeOrderAndGetCertificate()
    backend/renewal_scheduler.go
    processCertificateRenewal() (Zeile ~247-248):
    Verwendet NewACMEClientContext("letsencrypt-staging")
    TODO: Aus FQDN-Konfiguration lesen
    Provider-Wechsel-Erkennung (Zeile ~257-261):
    Prüft, ob Provider gewechselt wurde
    Erstellt neuen Account, wenn Provider ungleich ist
    backend/renewal_info.go
    FetchRenewalInfo() (Zeile ~163):
    Verwendet GetACMEManager() statt hardcodierter URLs
    Liest RenewalInfoURL aus Provider-Konfiguration
    Aktuell hardcodiert auf "letsencrypt-staging"
  3. Architektur-Änderungen
    Vorher:
    Hardcodierte Let's Encrypt Staging URLs
    Keine Modularität für andere ACME-Provider
    Direkte Verwendung der ACME-URLs im Code
    Nachher:
    Modulares System ähnlich dem Provider-System (AutoDNS, Hetzner)
    Separate Manager für ACME-Provider (ACMEManager) und normale Provider (ProviderManager)
    Provider-spezifische URLs werden dynamisch geladen
    Einfache Erweiterung um weitere ACME-Provider möglich
  4. Aktuelle Verwendung
    Hardcodierte Stellen (TODO für zukünftige Verbesserung):
    backend/main.go (Zeile ~2246): "letsencrypt-staging"
    backend/renewal_scheduler.go (Zeile ~247): "letsencrypt-staging"
    backend/renewal_info.go (Zeile ~163): "letsencrypt-staging"
  5. Vorteile der neuen Struktur
    Modularität: Einfache Integration neuer ACME-Provider
    Konfigurierbarkeit: Provider über JSON-Dateien aktivieren/deaktivieren
    Wartbarkeit: Provider-Logik isoliert
    Erweiterbarkeit: Interface-basiert, einfach erweiterbar
    Konsistenz: Gleiche Struktur wie andere Provider
Zusammenfassung: ACME & Let's Encrypt Refaktorisierung 1. Neue Dateien backend/providers/acme_provider.go (182 Zeilen) ACMEProvider Interface: Interface für ACME-basierte CAs ACMEProviderManager: Singleton-Manager für ACME-Provider Funktionen: GetACMEManager(): Singleton-Instanz RegisterACMEProvider(): Provider registrieren GetACMEProvider(): Provider abrufen GetACMEProviderConfig(): Konfiguration laden SetACMEProviderEnabled(): Provider aktivieren/deaktivieren loadAllConfigs(): Lädt Configs aus ./config/providers/ saveConfig(): Speichert Configs als JSON backend/providers/letsencrypt.go (107 Zeilen) LetsEncryptProvider: Implementierung für Let's Encrypt Unterstützt: Staging: letsencrypt-staging Production: letsencrypt-production Funktionen: GetDirectoryURL(): ACME Directory URLs GetRenewalInfoURL(): RenewalInfo API URLs TestConnection(): Verbindungstest zum ACME-Server ValidateConfig(): Konfigurationsvalidierung backend/acme_client_context.go (58 Zeilen) ACMEClientContext: Kontext-Objekt für ACME-Operationen Kapselt: Provider-Instanz Directory-Endpunkte (NewAccount, NewOrder, NewNonce) Directory-URL NewACMEClientContext(): Erstellt Context für einen Provider Config-Dateien backend/config/providers/letsencrypt-staging.json { "enabled": true, "settings": {} } backend/config/providers/letsencrypt-production.json { "enabled": true, "settings": {} } 2. Geänderte Dateien backend/main.go Provider-Registrierung (Zeile ~5607-5609): acmeManager := providers.GetACMEManager() acmeManager.RegisterACMEProvider(providers.NewLetsEncryptProvider("production")) acmeManager.RegisterACMEProvider(providers.NewLetsEncryptProvider("staging")) requestCertificateHandler (Zeile ~2246-2247): Verwendet NewACMEClientContext("letsencrypt-staging") TODO: Aus FQDN-Konfiguration lesen backend/acme_client.go RequestCertificate(): Akzeptiert ACMEClientContext statt hardcodierter URLs Funktionen verwenden Context-URLs: getNonce() createAccount() createOrder() extractTokenFromOrder() extractChallengeURLFromOrder() activateChallenge() cleanupChallenge() waitForChallengeValidation() waitForOrderReady() finalizeOrderAndGetCertificate() backend/renewal_scheduler.go processCertificateRenewal() (Zeile ~247-248): Verwendet NewACMEClientContext("letsencrypt-staging") TODO: Aus FQDN-Konfiguration lesen Provider-Wechsel-Erkennung (Zeile ~257-261): Prüft, ob Provider gewechselt wurde Erstellt neuen Account, wenn Provider ungleich ist backend/renewal_info.go FetchRenewalInfo() (Zeile ~163): Verwendet GetACMEManager() statt hardcodierter URLs Liest RenewalInfoURL aus Provider-Konfiguration Aktuell hardcodiert auf "letsencrypt-staging" 3. Architektur-Änderungen Vorher: Hardcodierte Let's Encrypt Staging URLs Keine Modularität für andere ACME-Provider Direkte Verwendung der ACME-URLs im Code Nachher: Modulares System ähnlich dem Provider-System (AutoDNS, Hetzner) Separate Manager für ACME-Provider (ACMEManager) und normale Provider (ProviderManager) Provider-spezifische URLs werden dynamisch geladen Einfache Erweiterung um weitere ACME-Provider möglich 4. Aktuelle Verwendung Hardcodierte Stellen (TODO für zukünftige Verbesserung): backend/main.go (Zeile ~2246): "letsencrypt-staging" backend/renewal_scheduler.go (Zeile ~247): "letsencrypt-staging" backend/renewal_info.go (Zeile ~163): "letsencrypt-staging" 5. Vorteile der neuen Struktur Modularität: Einfache Integration neuer ACME-Provider Konfigurierbarkeit: Provider über JSON-Dateien aktivieren/deaktivieren Wartbarkeit: Provider-Logik isoliert Erweiterbarkeit: Interface-basiert, einfach erweiterbar Konsistenz: Gleiche Struktur wie andere Provider
nick.adam added 2 commits 2025-11-27 22:53:18 +00:00
nick.adam merged commit 9a1168abf0 into development 2025-11-27 22:54:39 +00:00
nick.adam deleted branch feature/letsEncryptProvider 2025-11-27 22:54:39 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nick.adam/certigo#10
No description provided.