diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 9029e15..922084a 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -17,7 +17,28 @@ "Bash(mkdir:*)", "Bash(sudo touch:*)", "Bash(docker volume rm:*)", - "Bash(rm:*)" + "Bash(rm:*)", + "Bash(docker-compose stop:*)", + "Bash(docker-compose rm:*)", + "Bash(docker-compose down:*)", + "Bash(docker stop:*)", + "Bash(docker rm:*)", + "Bash(docker-compose build:*)", + "Bash(docker-compose up:*)", + "Bash(docker-compose ps:*)", + "Bash(docker logs:*)", + "Bash(nslookup:*)", + "Bash(getent:*)", + "Bash(ipconfig:*)", + "Bash(ss:*)", + "Bash(curl:*)", + "Bash(powershell.exe:*)", + "Bash(cp:*)", + "Bash(chmod:*)", + "Bash(unzip:*)", + "Bash(python3:*)", + "Bash(grep:*)", + "Bash(docker exec:*)" ], "deny": [] } diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..784be60 --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,120 @@ +# 🚀 Deployment-Anleitung für Internet-Zugriff + +## Voraussetzungen +- ✅ Docker und Docker Compose installiert +- ✅ Subdomains bei IONOS eingerichtet +- ✅ DynDNS in FRITZ!Box konfiguriert +- ✅ Port-Weiterleitung in FRITZ!Box (Port 443 → 192.168.178.88) + +## Schritt-für-Schritt Anleitung + +### 1. Windows Firewall konfigurieren +```powershell +# PowerShell als Administrator öffnen +cd C:\Users\Administrator\Documents\GitHub\v2-Docker +.\setup-firewall.ps1 +``` + +### 2. Docker-Container stoppen (falls laufend) +```bash +cd v2 +docker-compose down +``` + +### 3. Backup-Verzeichnis erstellen +```bash +mkdir C:\Users\Administrator\Documents\GitHub\v2-Docker\backups +``` + +### 4. Docker Images neu bauen und starten +```bash +docker-compose build --no-cache +docker-compose up -d +``` + +### 5. Container-Status prüfen +```bash +docker-compose ps +``` + +Alle Container sollten "Up" sein: +- db (PostgreSQL) +- admin-panel +- license-server +- nginx-proxy + +### 6. Logs prüfen +```bash +# Nginx Logs +docker logs nginx-proxy + +# Admin Panel Logs +docker logs admin-panel +``` + +### 7. Lokaler Test +Öffnen Sie im Browser: +- http://localhost (sollte auf HTTPS umleiten) +- https://localhost (Zertifikatswarnung ist normal) + +### 8. Internet-Test +Ihr Kollege kann jetzt zugreifen über: +- https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com + +**Login-Daten:** +- Benutzer: w@rh@mm3r +- Passwort: Warhammer123! + +## Troubleshooting + +### Problem: Seite nicht erreichbar +1. **DynDNS prüfen:** + ```bash + nslookup admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com + ``` + Die IP sollte Ihre aktuelle öffentliche IP sein. + +2. **Port-Weiterleitung prüfen:** + - FRITZ!Box → Internet → Freigaben + - Port 443 muss auf 192.168.178.88 weitergeleitet werden + +3. **Docker-Container prüfen:** + ```bash + docker ps + netstat -an | findstr :443 + ``` + +### Problem: Zertifikatswarnung +Das ist normal bei selbstsignierten Zertifikaten. Der Benutzer kann: +1. "Erweitert" klicken +2. "Weiter zu admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com (unsicher)" klicken + +### Let's Encrypt aktivieren (optional) +Wenn alles funktioniert, können Sie echte Zertifikate aktivieren: + +1. E-Mail in docker-compose.yaml anpassen: + ```yaml + LETSENCRYPT_EMAIL: "ihre-email@domain.de" + ``` + +2. Let's Encrypt aktivieren: + ```yaml + LETSENCRYPT_ENABLED: "true" + ``` + +3. Container neu starten: + ```bash + docker-compose up -d nginx + ``` + +## Sicherheitshinweise +- 🔒 Ändern Sie die Standard-Passwörter in der .env Datei +- 🔒 Aktivieren Sie Let's Encrypt für echte SSL-Zertifikate +- 🔒 Überwachen Sie die Audit-Logs regelmäßig +- 🔒 Erstellen Sie regelmäßige Backups + +## Support +Bei Problemen: +1. Container-Logs prüfen: `docker logs ` +2. Netzwerk-Konnektivität testen +3. Firewall-Einstellungen überprüfen \ No newline at end of file diff --git a/JOURNAL.md b/JOURNAL.md index 04592bb..33a48c8 100644 --- a/JOURNAL.md +++ b/JOURNAL.md @@ -13,69 +13,118 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker --- -## Aktueller Stand (2025-01-06) +## Aktueller Stand (2025-06-07) ### ✅ Implementiert 1. **Docker-Infrastruktur** - - docker-compose.yaml mit 3 Services (PostgreSQL, Admin Panel, License Server) + - docker-compose.yaml mit 4 Services (PostgreSQL, Admin Panel, License Server, Nginx) - Interne Bridge-Netzwerkkommunikation - Resource Limits konfiguriert (2 CPUs, 4GB RAM pro Service) + - Nginx Reverse Proxy für SSL-Termination 2. **PostgreSQL Datenbank** - - Tabellen: customers, licenses - - Init-Script vorhanden + - Tabellen: customers, licenses, sessions, audit_log, backup_history + - UTF-8 Support mit deutscher Locale (de_DE.UTF-8) + - Init-Script mit vollständigem Schema - Persistente Datenspeicherung -3. **Admin Panel (Basis)** +3. **Admin Panel (Vollständig)** - Flask-Anwendung mit Session-Management - - Login-Funktionalität für 2 Admin-User - - Lizenz-Erstellungsformular - - Automatische Kundenerstellung - - Läuft auf Port 443 mit selbstsigniertem SSL + - Login-Funktionalität für 2 Admin-User (rac00n, w@rh@mm3r) + - Dashboard mit Statistiken und Widgets + - Lizenz-CRUD (Create, Read, Update, Delete) + - Kunden-CRUD mit Lizenzzuordnung + - Session-Tracking und -Verwaltung + - Audit-Log für alle Aktionen + - Export-Funktion (CSV/Excel) + - Backup-System mit Verschlüsselung + - UTF-8 Support für deutsche Umlaute + - Suche und Filter mit Pagination + +4. **Internet-Zugriff** + - Nginx Reverse Proxy mit SSL-Termination + - IONOS SSL-Zertifikate mit vollständiger Certificate Chain + - Subdomain-Routing funktioniert (admin-panel-undso, api-software-undso) + - DynDNS und Port-Forwarding konfiguriert + - Feste IP-Adresse (192.168.178.88) ### ❌ Noch nicht implementiert 1. **License Server API** - Nur Platzhalter-Container vorhanden - - Keine API-Endpunkte + - Keine API-Endpunkte (/api/version, /api/validate, /api/heartbeat) - Keine Lizenzvalidierung - - Kein Heartbeat/Session-Management - -2. **Admin Panel Erweiterungen** - - Keine Lizenzübersicht - - Keine Bearbeitungs-/Löschfunktionen - - Keine Kundenverwaltung - - Kein UTF-8 Support für deutsche Umlaute - -3. **Internet-Zugriff** - - Kein Reverse Proxy - - Keine gültigen SSL-Zertifikate - - Subdomain-Routing nicht konfiguriert + - Kein aktives Session-Management --- ## Offene Aufgaben (Priorität) -### 🔴 Hoch -1. **UTF-8 Support** für deutsche Sonderzeichen (äöüß) -2. **Reverse Proxy Setup** (Nginx/Traefik) für Subdomain-Routing -3. **SSL-Zertifikate** (Let's Encrypt) für beide Subdomains -4. **License Server API implementieren** +### 🔴 Hoch (Basis-Funktionalität) +1. **License Server API implementieren** - `/api/version` - Versionscheck - `/api/validate` - Lizenzvalidierung - `/api/heartbeat` - Session-Management -5. **Admin Panel: Lizenzübersicht** +2. **Reverse Proxy Setup** (Nginx/Traefik) für Subdomain-Routing +3. **SSL-Zertifikate** (Let's Encrypt) für beide Subdomains +4. **Session-Management** (nur eine aktive Session pro Lizenz) -### 🟡 Mittel -1. **Admin Panel: Lizenz bearbeiten/löschen** -2. **Admin Panel: Kundenverwaltung** -3. **Session-Tracking** (nur eine aktive Session pro Lizenz) -4. **Logging-System** für Audit-Trail +### 🟡 Mittel (Erweiterte Features) +1. **Erweiterte Sicherheit** + - Rate-Limiting für Login-Versuche (Brute-Force-Schutz) + - 2-Faktor-Authentifizierung (2FA) + - Session-Timeout konfigurierbar + - IP-Whitelist für Admin-Zugriff + - Passwort-Richtlinien (Komplexität, Ablauf) -### 🟢 Niedrig -1. **Email-Benachrichtigungen** -2. **JWT-Authentifizierung für API** -3. **Backup-Strategie** -4. **VPS-Migrationsdokumentation** +2. **Lizenz-Verwaltung Erweiterungen** + - Bulk-Import von Lizenzen (CSV/Excel Upload) + - Lizenz-Templates für schnelle Erstellung + - Lizenz-Verlängerung mit einem Klick + - Lizenz-Historie (wer hatte welche Lizenz wann) + - Lizenz-Gruppen/Pakete + - Automatische Lizenzverlängerung + +3. **Benachrichtigungen** + - E-Mail bei ablaufenden Lizenzen (Struktur bereits vorbereitet) + - Dashboard-Benachrichtigungen (Toast/Pop-ups) + - Webhook-Support für externe Systeme + - SMS-Benachrichtigungen + - Slack/Teams Integration + +4. **API für Automatisierung** + - REST API für Admin-Funktionen + - API-Keys für programmatischen Zugriff + - Swagger/OpenAPI Dokumentation + - Rate Limiting für API + - Webhook Events + +### 🟢 Niedrig (Nice-to-have) +1. **Benutzeroberfläche** + - Dark Mode Toggle + - Mobile-optimierte Ansicht (Responsive) + - Mehrsprachigkeit (Deutsch/Englisch) + - Anpassbare Dashboard-Widgets + - Drag & Drop Dashboard + - Keyboard Shortcuts + +2. **Erweiterte Statistiken** + - Grafische Auswertungen (Chart.js/D3.js) + - Umsatz-Statistiken + - Nutzungsstatistiken pro Kunde + - Lizenz-Verlaufsdiagramme + - Geografische Verteilung + - Vorhersage-Analysen + +3. **Weitere Features** + - Rechnungserstellung + - Mehrmandantenfähigkeit + - Benutzerverwaltung (verschiedene Admin-Rollen) + - Lizenz-Aktivierung per E-Mail + - QR-Code für Lizenzschlüssel + - Dokumentenverwaltung pro Kunde + - JWT-Authentifizierung für API + - Docker Resource-Optimierung + - VPS-Migrationsdokumentation --- @@ -97,12 +146,12 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker ## Änderungsprotokoll -### 2025-01-06 - Journal erstellt +### 2025-06-06 - Journal erstellt - Initialer Projektstand dokumentiert - Aufgabenliste priorisiert - Technische Anforderungen festgehalten -### 2025-01-06 - UTF-8 Support implementiert +### 2025-06-06 - UTF-8 Support implementiert - Flask App Konfiguration für UTF-8 hinzugefügt (JSON_AS_ASCII=False) - PostgreSQL Verbindung mit UTF-8 client_encoding - HTML Forms mit accept-charset="UTF-8" @@ -122,7 +171,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - Kundennamen mit Umlauten testen (z.B. "Müller GmbH", "Björn Schäfer") - Email mit Umlauten testen -### 2025-01-06 - Lizenzübersicht implementiert +### 2025-06-06 - Lizenzübersicht implementiert - Neue Route `/licenses` für Lizenzübersicht - SQL-Query mit JOIN zwischen licenses und customers - Status-Berechnung (aktiv, läuft bald ab, abgelaufen) @@ -146,7 +195,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - Mehrere Lizenzen mit verschiedenen Ablaufdaten erstellen - Lizenzübersicht unter /licenses aufrufen -### 2025-01-06 - Lizenz bearbeiten/löschen implementiert +### 2025-06-06 - Lizenz bearbeiten/löschen implementiert - Neue Routen für Bearbeiten und Löschen von Lizenzen - Bearbeitungsformular mit vorausgefüllten Werten - Aktiv/Inaktiv-Status kann geändert werden @@ -170,7 +219,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - POST-only für Löschvorgänge - Bestätigungsdialog vor dem Löschen -### 2025-01-06 - Kundenverwaltung implementiert +### 2025-06-06 - Kundenverwaltung implementiert - Komplette CRUD-Funktionalität für Kunden - Übersicht zeigt Anzahl aktiver/gesamter Lizenzen pro Kunde - Kunden können nur gelöscht werden, wenn sie keine Lizenzen haben @@ -195,7 +244,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - Aktive Lizenzen werden separat gezählt (nicht abgelaufen + aktiv) - UTF-8 Support für Kundennamen mit Umlauten -### 2025-01-06 - Dashboard mit Statistiken implementiert +### 2025-06-06 - Dashboard mit Statistiken implementiert - Übersichtliches Dashboard als neue Startseite - Statistik-Karten mit wichtigen Kennzahlen - Listen für bald ablaufende und zuletzt erstellte Lizenzen @@ -224,7 +273,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - Warnung für bald ablaufende Lizenzen - Übersicht der neuesten Aktivitäten -### 2025-01-06 - Suchfunktion implementiert +### 2025-06-06 - Suchfunktion implementiert - Volltextsuche für Lizenzen und Kunden - Case-insensitive Suche mit LIKE-Operator - Suchergebnisse mit Hervorhebung des Suchbegriffs @@ -248,7 +297,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - Wildcards (%) für Teilstring-Suche - UTF-8 kompatibel für deutsche Umlaute -### 2025-01-06 - Filter und Pagination implementiert +### 2025-06-06 - Filter und Pagination implementiert - Erweiterte Filteroptionen für Lizenzübersicht - Pagination für große Datenmengen (20 Einträge pro Seite) - Filter bleiben bei Seitenwechsel erhalten @@ -276,7 +325,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker - URL-Parameter bleiben bei Navigation erhalten - Responsive Bootstrap-Komponenten -### 2025-01-06 - Session-Tracking implementiert +### 2025-06-06 - Session-Tracking implementiert - Neue Tabelle für Session-Verwaltung - Anzeige aktiver und beendeter Sessions - Manuelles Beenden von Sessions möglich @@ -305,7 +354,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker **Hinweis:** Die Session-Daten werden erst gefüllt, wenn der License Server API implementiert ist und Clients sich verbinden. -### 2025-01-06 - Export-Funktion implementiert +### 2025-06-06 - Export-Funktion implementiert - CSV und Excel Export für Lizenzen und Kunden - Formatierte Ausgabe mit deutschen Datumsformaten - UTF-8 Unterstützung für Sonderzeichen @@ -331,7 +380,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier - Automatische Spaltenbreite in Excel - BOM für UTF-8 CSV (Excel-Kompatibilität) -### 2025-01-06 - Audit-Log implementiert +### 2025-06-06 - Audit-Log implementiert - Vollständiges Änderungsprotokoll für alle Aktionen - Filterbare Übersicht mit Pagination - Detaillierte Anzeige von Änderungen @@ -357,7 +406,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier - 50 Einträge pro Seite mit Pagination - IP-Adresse und User-Agent Tracking -### 2025-01-06 - PostgreSQL UTF-8 Locale konfiguriert +### 2025-06-06 - PostgreSQL UTF-8 Locale konfiguriert - Eigenes PostgreSQL Dockerfile für deutsche Locale - Sicherstellung der UTF-8 Unterstützung auf Datenbankebene @@ -378,7 +427,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier - locale-gen für de_DE.UTF-8 - Vollständige UTF-8 Unterstützung für deutsche Sonderzeichen -### 2025-01-07 - Backup-Funktionalität implementiert +### 2025-06-07 - Backup-Funktionalität implementiert - Verschlüsselte Backups mit manueller und automatischer Ausführung - Backup-Historie mit Download und Wiederherstellung - Dashboard-Integration für Backup-Status @@ -409,4 +458,45 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier - APScheduler für automatische Backups - pg_dump/psql für Datenbank-Operationen - Audit-Log für alle Backup-Aktionen -- Sicherheitsabfrage bei Wiederherstellung \ No newline at end of file +- Sicherheitsabfrage bei Wiederherstellung + +### 2025-06-07 - HTTPS/SSL und Internet-Zugriff implementiert +- Nginx Reverse Proxy für externe Erreichbarkeit eingerichtet +- SSL-Zertifikate von IONOS mit vollständiger Certificate Chain integriert +- Netzwerkkonfiguration für feste IP-Adresse +- DynDNS und Port-Forwarding konfiguriert + +**Neue Features:** +- **Nginx Reverse Proxy**: Leitet HTTPS-Anfragen an Container weiter +- **SSL-Zertifikate**: Wildcard-Zertifikat von IONOS für *.z5m7q9dk3ah2v1plx6ju.com +- **Certificate Chain**: Server-, Intermediate- und Root-Zertifikate kombiniert +- **Subdomain-Routing**: admin-panel-undso und api-software-undso +- **Port-Forwarding**: FRITZ!Box 443 → 192.168.178.88 +- **Feste IP**: Windows-PC auf 192.168.178.88 konfiguriert + +**Neue/Geänderte Dateien:** +- v2_nginx/nginx.conf (Reverse Proxy Konfiguration) +- v2_nginx/Dockerfile (Nginx Container mit SSL) +- v2_nginx/ssl/fullchain.pem (Certificate Chain) +- v2_nginx/ssl/privkey.pem (Private Key) +- v2/docker-compose.yaml (nginx Service hinzugefügt) +- set-static-ip.ps1 (PowerShell Script für feste IP) +- reset-to-dhcp.ps1 (PowerShell Script für DHCP) + +**Technische Details:** +- SSL-Termination am Nginx Reverse Proxy +- Backend-Kommunikation über Docker-internes Netzwerk +- Admin-Panel nur noch über Nginx erreichbar (Port 443 nicht mehr exposed) +- License-Server behält externen Port 8443 für direkte API-Zugriffe +- Intermediate Certificates aus ZIP extrahiert und korrekt verkettet + +**Zugangsdaten:** +- Admin-Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com +- Benutzer 1: rac00n / 1248163264 +- Benutzer 2: w@rh@mm3r / Warhammer123! + +**Status:** +- ✅ Admin-Panel extern erreichbar ohne SSL-Warnungen +- ✅ Reverse Proxy funktioniert +- ✅ SSL-Zertifikate korrekt konfiguriert +- ✅ Netzwerk-Setup abgeschlossen \ No newline at end of file diff --git a/_.z5m7q9dk3ah2v1plx6ju.com_private_key.key b/_.z5m7q9dk3ah2v1plx6ju.com_private_key.key new file mode 100644 index 0000000..de6b7bf --- /dev/null +++ b/_.z5m7q9dk3ah2v1plx6ju.com_private_key.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w9 +0MkY/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G +7+EJlYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwS +qSQ9SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLc +pW6kwkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+Xr +U4CtiETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABAoIBADQVXYq7q9B6dTO0 +Z/oA974Z4lsK6aQfK4Z7J2OIenLeky3fxAVNcpW66hGzDSl6KCYnZmCGA6U3qF27 +uFAkq+eqaBhaqZu2569LtCjy7PK6LYFAgU5ROty5QJHgTcKNmXVne4iBjywx6QRC +h8eH0VnZisTNZjZkZngFSVT0W2M8XZjzXBkAH448KhRssMLB5WzJ/jToWdTqA/zg +M4dLnhSWQfgrZyzI1TA8rUu3v3UAdd37g8KCnq9+7Vtfr0rEe6K5c3JJIwKJWcXv +9GM6kC82otpHFGVXjZC040nESyeWUESaHphO3UUlQStgmUak3Bav0mniV/+6pCCq +DZL5nQECgYEA4SpSXfrD6OoJhcjT5fqBqEg6wKB8IDfy05zNqAvg5VKDylG1x+ir +umXD6znDmMSdODjHpIJR+El1Qp2DbRkDdJ3x3TTDclqFA9p7zcLBmS2FTnEfXX6o +R3M9LgkDNdqVgyzEK3e9LNZi6xCSMrRp/32eRGJqqs+KEDydBvj4eA8CgYEAwbtL +8QwSuZqEubRsz4f2sJqG4wODxl6jenYRPLXrL9BpLzzGsw460UKjaUtyzBYeJoBm +Fc+bBcyzMt6vsarzlyXpmEfDsf3+f1/l4MbcUoW3YWmrPdsQ8JuqCheRbl84h5lT +MOaiGjPlK7hnIxlq+mcnn6hnmUuObUCuGHHQeCcCgYBMQVwBzfJZSCGPeHMi+NK+ +Xi/fmrpO4wPO3NTda6BvqaFOfJu2pzq5dsuCN17htvyT1M7wDN6b2qzmsZeX9Bey +f+cwhjUG3lcb9ftltOaB7OOvrCn2LPXqtMFsfMrkizGFajzJh9S+gaCggU0x9N3N +FArsl/QOAxl75Ds96EWlywKBgCZH8kuhTRnr1Io1gsLHZRGklz7IdQN/s+IA7osG +j4CVOBOjeMfs6eZruoqV5As7251UBdgNe957gnVs117OHvAhB7WViK/lNqLIuk3e +Pa74yTGwhavlW8WPnNv9qDkdC7iPrYaeLC3tTz2CZK7k2OS9+XBtAHukGHKyMzSV +WNJFAoGAMO81Vw+bw0c4twBhRvQhpXsXT5gCiDxtS+I+9neXcmEo0JvB+JM96j7I +UNKGFVcx22LgLIJb+77Euq42x8TpLIbnxCbLsT2GKxqqrB0z+YSixXrNotqV8/FB +EYo1D+bSB7wnFbLRh4dKJ8rFAu7MSt5/KH9qRHGNtDFLETxAvmE= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/_.z5m7q9dk3ah2v1plx6ju.com_ssl_certificate_INTERMEDIATE.zip b/_.z5m7q9dk3ah2v1plx6ju.com_ssl_certificate_INTERMEDIATE.zip new file mode 100644 index 0000000..51d0b01 Binary files /dev/null and b/_.z5m7q9dk3ah2v1plx6ju.com_ssl_certificate_INTERMEDIATE.zip differ diff --git a/fullchain.pem b/fullchain.pem new file mode 100644 index 0000000..8da1d32 --- /dev/null +++ b/fullchain.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEhTCCA22gAwIBAgIUUH8qfFuR1gBrFIPMSLR3KQsXmsEwDQYJKoZIhvcNAQEL +BQAwazELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWExDzANBgNVBAcMBk11 +bmljaDEUMBIGA1UECgwLRGV2ZWxvcG1lbnQxIzAhBgNVBAMMGiouejVtN3E5ZGsz +YWgydjFwbHg2anUuY29tMB4XDTI1MDYwNzE1NTMwOFoXDTI2MDYwNzE1NTMwOFow +azELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWExDzANBgNVBAcMBk11bmlj +aDEUMBIGA1UECgwLRGV2ZWxvcG1lbnQxIzAhBgNVBAMMGiouejVtN3E5ZGszYWgy +djFwbHg2anUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy1+S +sbsTsWM/tpJIYPuxld0Y7gQtmhO/YgeZf/2WAUmrDOuAY0mHZvc7Q8rrQ+B0Fviz +qs04/66A9L/f2puCJ/kE5U3dRKRWR0D+mDGgYmQlvaIFiSUknauJTue5zk6WE4LW +mvacuQAQaUgxYOUWu/lbLWYNaT7ZOlXGGPRgxuikjRQRyP4kdLLPJMNTCzD+yWqH +5MLdfOWmlphhLiuAk+vUbyZ45Bi1imxYc4e5RmWfE3OHwOE4oEihSvhpIqGgqIqK +iknXL04uobi/ZfKpy45Zz2RwgRk4OTlxH0uWAnWR3h7TyKY0K2mUZrQd/SvcOhRp +ZtKdFyWgXKMXzLWVFwIDAQABo4IBHzCCARswHQYDVR0OBBYEFH12zcUUPblwagft +F5rTsvWsHuG4MB8GA1UdIwQYMBaAFH12zcUUPblwagftF5rTsvWsHuG4MA8GA1Ud +EwEB/wQFMAMBAf8wgccGA1UdEQSBvzCBvIIaKi56NW03cTlkazNhaDJ2MXBseDZq +dS5jb22CGHo1bTdxOWRrM2FoMnYxcGx4Nmp1LmNvbYIqYWRtaW4tcGFuZWwtdW5k +c28uejVtN3E5ZGszYWgydjFwbHg2anUuY29tgitzZXJ2ZXItYWRtaW4tdW5kc28u +ejVtN3E5ZGszYWgydjFwbHg2anUuY29tgithcGktc29mdHdhcmUtdW5kc28uejVt +N3E5ZGszYWgydjFwbHg2anUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBimBut+xPO +vpnmCRqSwn4M7omqqyOOaMFxIjfKbboBbFv2ViL47HVqgNougr2GFLIAxJjjR8CM +SMp6EW7syUG/WW2ttzOjr3bWGMH3x0K61bBLdZU3vEuyBXbHPK+yyaTEa1C1kpmw +hsxB38iAePAABsIqDf77STV5t+ZvFe+1RLFaFfUIu5b39g/U8x026igtKcCjOEsI +90jn3GQs2rJHOe4+ZoSbzNntnoDakCcpfVX9exr5G5aOTycxmct1TvSFpY0Y+zvl +Oy7US0zl78BHGLFn48C1aAi6Vb8Cc6KdUOAQWOm/OJqsbxo6ymjB0T/3Cw6knvB9 +L8ZdoF36eAps +-----END CERTIFICATE----- diff --git a/intermediate1.cer b/intermediate1.cer new file mode 100644 index 0000000..5b4761e --- /dev/null +++ b/intermediate1.cer @@ -0,0 +1,38 @@ +-----BEGIN CERTIFICATE----- +MIIGlTCCBH2gAwIBAgIRANJ/u8HeNZ5SFq1hSVhgmcQwDQYJKoZIhvcNAQEMBQAw +gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK +ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD +VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx +MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowXzELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1NlY3RpZ28gTGltaXRlZDE2MDQGA1UEAxMtU2VjdGlnbyBQdWJsaWMgU2Vy +dmVyIEF1dGhlbnRpY2F0aW9uIFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAk77VNlJ12AEjoBxHQknuY7a3If3EldVIKyZ8FFMQ2nn9K7ct +pNQs+uoy3UnCub0PSD17WphUr55dMXRPB/xQId2kz2hPGxJjbSWZTCqZ80gwYfqB +fB6nCErcPiscHxhMcao1jK34bug7StnllALWiYQTqm3ITzPMUJY3kjPcX4jnn1TZ +SPCYQ9Zm/Z8XOEPFAVEL1+MjDxRdWxTnS77d9MjaAzfR1jmhIVEwg7Bt1zBOlluR +8HAkq79FgWRDDb0hOi886Z4NyyC1QifM2m+b7mQwkDnNk2WBITG1I1AzNyLjOO34 +MTDMRf5i+dFdMnlCh99qzFYZQE3Oqrv5tXZJlPEn+JGlg+UGs2MOgNzgElWApjtm +tDmHLcjw0NEU6eQNTQ72XVdyxTscR1ad4tX7gWGMzE2AkDRbt9cUddzYBEifwMEo +iLTpHMqnsfFWt3tJTFnlIBWohAIp+jiUaZpJBo/NH3kUFxIMg3reH7GX7vmXeCik +yESS6X0mBaZYcpt5E9gRX67FOGI0aLKGMI74kGGeMmz1BzbNokxu7Io27fLmmRVE +cMN8vJw5wLTha/eDJSNX2RKA5UnwdQ/vjescm1QotCE8/HwK/+97a3X/ix2gGQWr ++vgrgULoOLq7+6r9PeDzyt9Ol5cp7fMYVumllqy9w5CYsuD5otSmR0N8bc8CAwEA +AaOCASAwggEcMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1Ud +DgQWBBRWc1hklfmSGrASKgRieaFAFYghSTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEQYDVR0g +BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy +dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1 +BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz +dC5jb20wDQYJKoZIhvcNAQEMBQADggIBADpvBIlq7bMU0cFDT/9P9+BsgCkRgQs0 +S6Bf7vJSlWMHwby0VGvxCS0hrbi0K2BINZbEbsVsgpQq04431yyoVn3Hldorgq24 +RldRDOOipEZDTFB9wC9HYt1thHF00XeG2C8KC1plwoEzKAIhPvefI/C3cT0CfTXJ +uFjUbKIgSwjNjw6YHtLgoy/hd5+JLUlLco/gzFX/qWbT7tEquOMYpsNKWZj8TLqP +q6zMiG4Na6feEZte6YPXGrMWlTWN341vDedc+yxQqSug79HJUQcOZs7KyDWztmae +QxsPE49UV/8XwrfZtZaYyrs4FpD94Z4Q8dzXGL8+qEJjxgcza7W6PROaClubavd1 +VKPm8+aCW77u7SxpR2TFGL6kPdxsKyFijpcunR5V79sUyROfNdzjrAcFWZXK8sbb +9FlnwuVG677JLv+ZVTX5AxLvW5OB4zt5uS+zB62wJ/Wv+jXGAttSAcJec4iFgCWH +Rvdi/jJoSzRLa3nEzx6pFIzclSCnh0u1xCeLcUBypSiPga8W+6PkuoyQq8U9qs9E +oxG5NvrvlyshwUS9yvcZRGw7Ljlx4jJH/BhIPR8kIBCQj1vna9TziZOrw1Of8hDU +bHKFG9Pm8Dp2vbjz/2JH39qvxshPKVllGfq+5klPm7yZRUYTiCMAbqwNdL/nsqF2 +Rnnyp58XRStJ +-----END CERTIFICATE----- diff --git a/intermediate2.cer b/intermediate2.cer new file mode 100644 index 0000000..af4a9d6 --- /dev/null +++ b/intermediate2.cer @@ -0,0 +1,36 @@ +-----BEGIN CERTIFICATE----- +MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq +RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH +12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja +EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm +M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv +38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB +pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn +2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN +xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk +lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw +DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI +KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw +VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv +UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH +AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp +Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF +BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA +YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8 +ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d +q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF +h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH +5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD +4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd +unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536 +WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l +7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW +r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh +JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y= +-----END CERTIFICATE----- diff --git a/privkey.pem b/privkey.pem new file mode 100644 index 0000000..1b02c17 --- /dev/null +++ b/privkey.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDLX5KxuxOxYz+2 +kkhg+7GV3RjuBC2aE79iB5l//ZYBSasM64BjSYdm9ztDyutD4HQW+LOqzTj/roD0 +v9/am4In+QTlTd1EpFZHQP6YMaBiZCW9ogWJJSSdq4lO57nOTpYTgtaa9py5ABBp +SDFg5Ra7+VstZg1pPtk6VcYY9GDG6KSNFBHI/iR0ss8kw1MLMP7Jaofkwt185aaW +mGEuK4CT69RvJnjkGLWKbFhzh7lGZZ8Tc4fA4TigSKFK+GkioaCoioqKSdcvTi6h +uL9l8qnLjlnPZHCBGTg5OXEfS5YCdZHeHtPIpjQraZRmtB39K9w6FGlm0p0XJaBc +oxfMtZUXAgMBAAECggEAIeiSfd2yP95LbjZfqQPuLQ2LLYw2yjzGqSKZPlTaoOZW +hbXyVxuYXtuT3w7DQTL4SCg5VJ4ZBdBjoesn+Lv67I1BerYL0XkRBZpZmKiVlDIc +dMzB3Yb63usN3sEWIsbJkQE8pOO/Z70R/2vRB9XKf5bo093zGHwpHefVOq3sQN2X +BWeYMnlcmxp4JM+PlTJzU0EhW85f40+MccI9UbbeEEAfuNDfAKt0DC3B653zfTpy +YBD03WKAXAPWwHu4ax3EYhYz7KSdSwdSNMTO4QV0GOWiatp/QyV8PwArNwV8gMgO +R7zWPvRuiMDavdaRdriVm334dUBtmtKnUgv/PHhvSQKBgQDs//E9O71R/L8i0f71 +5rU+dWMqiNzVG1tYvJQVO1fT1MJBYLYYmmeg++OCn7AU/wvlCy+xCuTfKwh6hNv7 +XSiR+r25TALeXwU4CXmDx8XkwigsNkwovh0Wa5EPsB3Tee6rl+fs6chwbqU3q2Bs +iOAkTPpbrrlSdxvWQC8LOIv5HQKBgQDbrX/Zflb7vPg2YRCvB557qsXSVmYxM0hi +BB/qrPumBSNX2tAPqKKztpPwGu0xc++VMO233xH6y8Qsw5Hab2qvJGFCGb1zKgAq +lG2JB1YYINtnzkFk5CpGwvz5jJaQvfoeM8YSbbExVIaeCIn+IMXpi5p8+XdV72Iu +RhPqpM3kwwKBgQC18hO458kDTV9Lkx4CmDiil6om+GVY8aSiLjwdRK67gIYVfPKv +VrKiA175ZDDhHaB7Gahmaa+lqLrcnGzpv+4qi+3leHZnU1mFWLjCM7c4VNpUfubf +DHz2PmRiP9nWBbD2aStzVVM9BaSvZVEkYbx6AeLeSfgaWDi1thanraS//QKBgQCs +mJWBqWzoHuGZwAueqUrQeS0yBGYIM/Wj5P+6nyyclR7esPGVy/YBYuq61D0WBLPx +MN8k/yOeO6inTwTybWWRs/CiQZ0CtbYpvjKNXfE7xdz8oyXoAghhTmP6IYZOtKSm +RCFUa1CzpGicE7NvsgotY1z+4fXr08f8+Vw+mDuYhwKBgANotZFPsaWbwtiYtmEY +buN4TpL0AlxoFVlV+ZI5GX7NGT3pTBn/sneRW9MRmAqM2Ey9O96ISlZsI2RVIQ6P +EU2BwIY0Ojy5UswQit0R3QHNL6v0lXRb5IVlnAvIW3N2SpofdDyGNnnWsCzUOqNQ +ktCuQZblIfgpmCpeSe2QF1pX +-----END PRIVATE KEY----- diff --git a/reset-to-dhcp.ps1 b/reset-to-dhcp.ps1 new file mode 100644 index 0000000..4b67ddc --- /dev/null +++ b/reset-to-dhcp.ps1 @@ -0,0 +1,38 @@ +# PowerShell Script zum Zurücksetzen auf DHCP +# MUSS ALS ADMINISTRATOR AUSGEFÜHRT WERDEN! + +Write-Host "=== Zurücksetzen auf DHCP (automatische IP) ===" -ForegroundColor Green + +# Aktive WLAN-Adapter finden +$adapters = Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and ($_.Name -like '*WLAN*' -or $_.Name -like '*Wi-Fi*')} + +if ($adapters.Count -eq 0) { + Write-Host "Kein aktiver WLAN-Adapter gefunden!" -ForegroundColor Red + exit +} + +# Den ersten aktiven WLAN-Adapter nehmen +$adapter = $adapters[0] +Write-Host "`nSetze Adapter zurück auf DHCP: $($adapter.Name)" -ForegroundColor Cyan + +# Statische IP entfernen +Write-Host "`nEntferne statische IP-Konfiguration..." -ForegroundColor Yellow +Remove-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue +Remove-NetRoute -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue + +# DHCP aktivieren +Write-Host "`nAktiviere DHCP..." -ForegroundColor Green +Set-NetIPInterface -InterfaceIndex $adapter.InterfaceIndex -Dhcp Enabled + +# DNS auf automatisch setzen +Write-Host "`nSetze DNS auf automatisch..." -ForegroundColor Green +Set-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex -ResetServerAddresses + +Write-Host "`n✅ Fertig! Der Adapter nutzt jetzt wieder DHCP (automatische IP-Vergabe)" -ForegroundColor Green + +# Kurz warten +Start-Sleep -Seconds 3 + +# Neue IP anzeigen +Write-Host "`nNeue IP-Adresse:" -ForegroundColor Yellow +Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 | Format-Table IPAddress, PrefixLength \ No newline at end of file diff --git a/set-static-ip.ps1 b/set-static-ip.ps1 new file mode 100644 index 0000000..a8c2758 --- /dev/null +++ b/set-static-ip.ps1 @@ -0,0 +1,54 @@ +# PowerShell Script für statische IP-Konfiguration +# MUSS ALS ADMINISTRATOR AUSGEFÜHRT WERDEN! + +Write-Host "=== Statische IP 192.168.178.88 einrichten ===" -ForegroundColor Green + +# Aktive WLAN-Adapter finden +$adapters = Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and ($_.Name -like '*WLAN*' -or $_.Name -like '*Wi-Fi*')} + +if ($adapters.Count -eq 0) { + Write-Host "Kein aktiver WLAN-Adapter gefunden!" -ForegroundColor Red + exit +} + +Write-Host "`nGefundene WLAN-Adapter:" -ForegroundColor Yellow +$adapters | Format-Table Name, Status, InterfaceIndex + +# Den ersten aktiven WLAN-Adapter nehmen +$adapter = $adapters[0] +Write-Host "`nKonfiguriere Adapter: $($adapter.Name)" -ForegroundColor Cyan + +# Aktuelle Konfiguration anzeigen +Write-Host "`nAktuelle IP-Konfiguration:" -ForegroundColor Yellow +Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 | Format-Table IPAddress, PrefixLength + +# Alte IP-Konfiguration entfernen +Write-Host "`nEntferne alte IP-Konfiguration..." -ForegroundColor Yellow +Remove-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue +Remove-NetRoute -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue + +# Neue statische IP setzen +Write-Host "`nSetze neue statische IP: 192.168.178.88" -ForegroundColor Green +New-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -IPAddress "192.168.178.88" -PrefixLength 24 -DefaultGateway "192.168.178.1" -AddressFamily IPv4 + +# DNS-Server setzen (FRITZ!Box und Google) +Write-Host "`nSetze DNS-Server..." -ForegroundColor Green +Set-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex -ServerAddresses "192.168.178.1", "8.8.8.8" + +# Neue Konfiguration anzeigen +Write-Host "`nNeue IP-Konfiguration:" -ForegroundColor Green +Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 | Format-Table IPAddress, PrefixLength +Get-NetRoute -InterfaceIndex $adapter.InterfaceIndex -DestinationPrefix "0.0.0.0/0" | Format-Table DestinationPrefix, NextHop + +Write-Host "`n✅ Fertig! Ihre IP ist jetzt: 192.168.178.88" -ForegroundColor Green +Write-Host "Die FRITZ!Box Port-Weiterleitung sollte jetzt funktionieren!" -ForegroundColor Green + +# Test +Write-Host "`nTeste Internetverbindung..." -ForegroundColor Yellow +Test-NetConnection google.com -Port 80 -InformationLevel Quiet + +if ($?) { + Write-Host "✅ Internetverbindung funktioniert!" -ForegroundColor Green +} else { + Write-Host "❌ Keine Internetverbindung - prüfen Sie die Einstellungen!" -ForegroundColor Red +} \ No newline at end of file diff --git a/setup-firewall.ps1 b/setup-firewall.ps1 new file mode 100644 index 0000000..1b0e9f6 --- /dev/null +++ b/setup-firewall.ps1 @@ -0,0 +1,16 @@ +# PowerShell-Script für Windows Firewall Konfiguration +# Als Administrator ausführen! + +Write-Host "Konfiguriere Windows Firewall für Docker..." -ForegroundColor Green + +# Firewall-Regeln für HTTP und HTTPS +New-NetFirewallRule -DisplayName "Docker HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow -ErrorAction SilentlyContinue +New-NetFirewallRule -DisplayName "Docker HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow -ErrorAction SilentlyContinue + +Write-Host "Firewall-Regeln erstellt." -ForegroundColor Green + +# Docker-Service neustarten (optional) +Write-Host "Starte Docker-Service neu..." -ForegroundColor Yellow +Restart-Service docker + +Write-Host "Fertig! Ports 80 und 443 sind jetzt offen." -ForegroundColor Green \ No newline at end of file diff --git a/v2/docker-compose.yaml b/v2/docker-compose.yaml index ea2c044..a477f35 100644 --- a/v2/docker-compose.yaml +++ b/v2/docker-compose.yaml @@ -48,19 +48,35 @@ services: context: ../v2_adminpanel container_name: admin-panel restart: always - ports: - - "443:443" # Admin-Panel über HTTPS erreichbar + # Port-Mapping entfernt - nur über nginx erreichbar env_file: .env depends_on: - postgres networks: - internal_net + volumes: + # Backup-Verzeichnis + - ../backups:/app/backups deploy: resources: limits: cpus: '2' memory: 4g + nginx: + build: + context: ../v2_nginx + container_name: nginx-proxy + restart: always + ports: + - "80:80" + - "443:443" + depends_on: + - admin-panel + - license-server + networks: + - internal_net + networks: internal_net: driver: bridge diff --git a/v2_nginx/Dockerfile b/v2_nginx/Dockerfile new file mode 100644 index 0000000..d39efc8 --- /dev/null +++ b/v2_nginx/Dockerfile @@ -0,0 +1,21 @@ +FROM nginx:alpine + +# SSL-Verzeichnis erstellen +RUN mkdir -p /etc/nginx/ssl + +# Default config entfernen +RUN rm -f /etc/nginx/conf.d/default.conf + +# Nginx-Konfiguration kopieren +COPY nginx.conf /etc/nginx/nginx.conf + +# SSL-Zertifikate kopieren +COPY ssl/fullchain.pem /etc/nginx/ssl/ +COPY ssl/privkey.pem /etc/nginx/ssl/ + +# Berechtigungen setzen +RUN chmod 600 /etc/nginx/ssl/privkey.pem + +EXPOSE 80 443 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/v2_nginx/Dockerfile.letsencrypt b/v2_nginx/Dockerfile.letsencrypt new file mode 100644 index 0000000..1602ddd --- /dev/null +++ b/v2_nginx/Dockerfile.letsencrypt @@ -0,0 +1,21 @@ +FROM nginx:alpine + +# Certbot für Let's Encrypt installieren +RUN apk add --no-cache certbot certbot-nginx + +# SSL-Verzeichnis erstellen +RUN mkdir -p /etc/nginx/ssl + +# Default config entfernen +RUN rm -f /etc/nginx/conf.d/default.conf + +# Nginx-Konfiguration kopieren +COPY nginx.conf /etc/nginx/nginx.conf + +# Entrypoint für Certbot +COPY entrypoint-letsencrypt.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +EXPOSE 80 443 + +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/v2_nginx/entrypoint-letsencrypt.sh b/v2_nginx/entrypoint-letsencrypt.sh new file mode 100644 index 0000000..922d840 --- /dev/null +++ b/v2_nginx/entrypoint-letsencrypt.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Temporäre Nginx config für Let's Encrypt Challenge +cat > /etc/nginx/conf.d/default.conf << EOF +server { + listen 80; + server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com api-software-undso.z5m7q9dk3ah2v1plx6ju.com; + + location /.well-known/acme-challenge/ { + root /var/www/certbot; + } + + location / { + return 301 https://\$host\$request_uri; + } +} +EOF + +# Nginx starten +nginx + +# Let's Encrypt Zertifikate holen +echo "Requesting Let's Encrypt certificates..." +certbot certonly --webroot -w /var/www/certbot \ + -d admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com \ + -d api-software-undso.z5m7q9dk3ah2v1plx6ju.com \ + --non-interactive \ + --agree-tos \ + --email admin@z5m7q9dk3ah2v1plx6ju.com \ + --no-eff-email + +# Prüfen ob erfolgreich +if [ $? -eq 0 ]; then + echo "Certificates obtained successfully!" + + # Nginx stoppen + nginx -s stop + + # Kopiere die echte config + cp /etc/nginx/nginx.conf.real /etc/nginx/nginx.conf + + # Nginx mit SSL starten + nginx -g "daemon off;" +else + echo "Failed to obtain certificates" + nginx -g "daemon off;" +fi \ No newline at end of file diff --git a/v2_nginx/entrypoint.sh b/v2_nginx/entrypoint.sh new file mode 100644 index 0000000..d87cdcf --- /dev/null +++ b/v2_nginx/entrypoint.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Nginx im Hintergrund starten +nginx + +# Warte bis Nginx läuft +sleep 5 + +# Versuche Let's Encrypt Zertifikate zu holen (nur in Produktion) +if [ "$LETSENCRYPT_ENABLED" = "true" ]; then + echo "Requesting Let's Encrypt certificates..." + + # Admin Panel Zertifikat + certbot --nginx -d admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com \ + --non-interactive --agree-tos --email ${LETSENCRYPT_EMAIL} \ + --redirect --expand --no-eff-email + + # API Server Zertifikat + certbot --nginx -d api-software-undso.z5m7q9dk3ah2v1plx6ju.com \ + --non-interactive --agree-tos --email ${LETSENCRYPT_EMAIL} \ + --redirect --expand --no-eff-email + + # Auto-renewal einrichten + echo "0 0,12 * * * root certbot renew --quiet" >> /etc/crontabs/root + crond +fi + +# Nginx im Vordergrund halten +nginx -s stop +nginx -g "daemon off;" \ No newline at end of file diff --git a/v2_nginx/nginx.conf b/v2_nginx/nginx.conf new file mode 100644 index 0000000..b74efbe --- /dev/null +++ b/v2_nginx/nginx.conf @@ -0,0 +1,71 @@ +events { + worker_connections 1024; +} + +http { + # SSL-Einstellungen + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + # Admin Panel + server { + listen 80; + server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com; + + # Redirect HTTP to HTTPS + return 301 https://$server_name$request_uri; + } + + server { + listen 443 ssl; + server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com; + + # SSL-Zertifikate (echte Zertifikate) + ssl_certificate /etc/nginx/ssl/fullchain.pem; + ssl_certificate_key /etc/nginx/ssl/privkey.pem; + + # Proxy-Einstellungen + location / { + proxy_pass https://admin-panel:443; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # WebSocket support (falls benötigt) + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # SSL-Verifizierung für selbstsignierte Zertifikate deaktivieren + proxy_ssl_verify off; + } + } + + # API Server (für später) + server { + listen 80; + server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com; + + return 301 https://$server_name$request_uri; + } + + server { + listen 443 ssl; + server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com; + + ssl_certificate /etc/nginx/ssl/fullchain.pem; + ssl_certificate_key /etc/nginx/ssl/privkey.pem; + + location / { + proxy_pass https://license-server:8443; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_ssl_verify off; + } + } +} \ No newline at end of file diff --git a/v2_nginx/ssl/fullchain.pem b/v2_nginx/ssl/fullchain.pem new file mode 100644 index 0000000..26f116d --- /dev/null +++ b/v2_nginx/ssl/fullchain.pem @@ -0,0 +1,112 @@ +-----BEGIN CERTIFICATE----- +MIIGqDCCBRCgAwIBAgIRAP++iWUqjw7yOtqdDe3DXdcwDQYJKoZIhvcNAQEMBQAw +YDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE +AxMuU2VjdGlnbyBQdWJsaWMgU2VydmVyIEF1dGhlbnRpY2F0aW9uIENBIERWIFIz +NjAeFw0yNTA2MDcwMDAwMDBaFw0yNjA2MDcyMzU5NTlaMCUxIzAhBgNVBAMMGiou +ejVtN3E5ZGszYWgydjFwbHg2anUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w90MkY +/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G7+EJ +lYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwSqSQ9 +SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLcpW6k +wkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+XrU4Ct +iETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABo4IDFjCCAxIwHwYDVR0jBBgw +FoAUaMASFhgOr872h6YyV6NGUV3LBycwHQYDVR0OBBYEFD2tx0mT4AtPU2ISB5ui +xdaBPrXKMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQG +CCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUw +IwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCB +hAYIKwYBBQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28u +Y29tL1NlY3RpZ29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0 +MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTCCAX4GCisGAQQB +1nkCBAIEggFuBIIBagFoAHcAlpdkv1VYl633Q4doNwhCd+nwOtX2pPM2bkakPw/K +qcYAAAGXSz80dwAABAMASDBGAiEAwqN1tMQQth342Rir/V/0PdCs2MH0OmuoT2xZ +8tiwaikCIQCnKukR44Tt6ZJaZ+hcleqT77ug7XRIXpgEtei6avNbLgB2ABmG1Mco +qm/+ugNveCpNAZGqzi1yMQ+uzl1wQS0lTMfUAAABl0s/Mm4AAAQDAEcwRQIgEifW +JKtue9T6SyDo21oG3kX3BWzFS3b+EA0aBpe7+8YCIQC8dXbuLYzaOinK7JDtLwWT +QSveqzYirRlHT2E9OswywQB1AA5XlLzzrqk+MxssmQez95Dfm8I9cTIl3SGpJaxh +xU4hAAABl0s/MrwAAAQDAEYwRAIgK52ai/UeJMdBo/aSkvlm6jLmVIHN4/IiidX+ +AEP5A5UCIGCLtmAlmj+G3m+Qci2ex6iwW/JkpeSTCns2gCvYhcNsMD8GA1UdEQQ4 +MDaCGiouejVtN3E5ZGszYWgydjFwbHg2anUuY29tghh6NW03cTlkazNhaDJ2MXBs +eDZqdS5jb20wDQYJKoZIhvcNAQEMBQADggGBAC/vgQ15loW1Sb2gEPc00aHzxL0S +QrBFyyJAhYAu1bJRnDVZTuRsrheyKJgZJUSRUMv9j7Row4EcclNRKjzdCCK0K7wv +HFK5O1npeC0WFIKu+Wescy/a0rxXV6vSadtE/2R5NI4gZW1KW7n8+g5lcB1bqBth +JuiUKtddMCi/d04UQOasJ35OK61yHi893RnVpfs52wNik++PWPDvVahdCLMqQ6KY +SngLKlmIfuYDfTmwftTJsRGnTMsw1lUI+L9D4MeqcYmakWUcqD/v3SyijcL/M7ag +lkZoyQPy8qd/Kjgoh+hs1vscU6jotP40ZhSnCBZZZ9bw7h7RvhQY6uOgLIwKfjRG +NXbG4FkQBPLhkLwFmGnC/aZui1Eholi9h1Rz4cFZ5VDqdjsN/YIjpH/t2LHMh9Lu +njibo1dOyQqNSdILZfUGo/kii5ZMI2+TRyOZOACvbLU9mZmyGjXS4l5tc4PRhjUE +2V3Apslo+pviTCIinLPng15mzTOQxlUokLf5yg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq +RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH +12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja +EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm +M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv +38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB +pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn +2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN +xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk +lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw +DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI +KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw +VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv +UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH +AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp +Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF +BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA +YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8 +ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d +q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF +h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH +5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD +4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd +unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536 +WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l +7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW +r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh +JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGlTCCBH2gAwIBAgIRANJ/u8HeNZ5SFq1hSVhgmcQwDQYJKoZIhvcNAQEMBQAw +gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK +ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD +VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx +MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowXzELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1NlY3RpZ28gTGltaXRlZDE2MDQGA1UEAxMtU2VjdGlnbyBQdWJsaWMgU2Vy +dmVyIEF1dGhlbnRpY2F0aW9uIFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOC +Ag8AMIICCgKCAgEAk77VNlJ12AEjoBxHQknuY7a3If3EldVIKyZ8FFMQ2nn9K7ct +pNQs+uoy3UnCub0PSD17WphUr55dMXRPB/xQId2kz2hPGxJjbSWZTCqZ80gwYfqB +fB6nCErcPiscHxhMcao1jK34bug7StnllALWiYQTqm3ITzPMUJY3kjPcX4jnn1TZ +SPCYQ9Zm/Z8XOEPFAVEL1+MjDxRdWxTnS77d9MjaAzfR1jmhIVEwg7Bt1zBOlluR +8HAkq79FgWRDDb0hOi886Z4NyyC1QifM2m+b7mQwkDnNk2WBITG1I1AzNyLjOO34 +MTDMRf5i+dFdMnlCh99qzFYZQE3Oqrv5tXZJlPEn+JGlg+UGs2MOgNzgElWApjtm +tDmHLcjw0NEU6eQNTQ72XVdyxTscR1ad4tX7gWGMzE2AkDRbt9cUddzYBEifwMEo +iLTpHMqnsfFWt3tJTFnlIBWohAIp+jiUaZpJBo/NH3kUFxIMg3reH7GX7vmXeCik +yESS6X0mBaZYcpt5E9gRX67FOGI0aLKGMI74kGGeMmz1BzbNokxu7Io27fLmmRVE +cMN8vJw5wLTha/eDJSNX2RKA5UnwdQ/vjescm1QotCE8/HwK/+97a3X/ix2gGQWr ++vgrgULoOLq7+6r9PeDzyt9Ol5cp7fMYVumllqy9w5CYsuD5otSmR0N8bc8CAwEA +AaOCASAwggEcMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1Ud +DgQWBBRWc1hklfmSGrASKgRieaFAFYghSTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEQYDVR0g +BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy +dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1 +BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz +dC5jb20wDQYJKoZIhvcNAQEMBQADggIBADpvBIlq7bMU0cFDT/9P9+BsgCkRgQs0 +S6Bf7vJSlWMHwby0VGvxCS0hrbi0K2BINZbEbsVsgpQq04431yyoVn3Hldorgq24 +RldRDOOipEZDTFB9wC9HYt1thHF00XeG2C8KC1plwoEzKAIhPvefI/C3cT0CfTXJ +uFjUbKIgSwjNjw6YHtLgoy/hd5+JLUlLco/gzFX/qWbT7tEquOMYpsNKWZj8TLqP +q6zMiG4Na6feEZte6YPXGrMWlTWN341vDedc+yxQqSug79HJUQcOZs7KyDWztmae +QxsPE49UV/8XwrfZtZaYyrs4FpD94Z4Q8dzXGL8+qEJjxgcza7W6PROaClubavd1 +VKPm8+aCW77u7SxpR2TFGL6kPdxsKyFijpcunR5V79sUyROfNdzjrAcFWZXK8sbb +9FlnwuVG677JLv+ZVTX5AxLvW5OB4zt5uS+zB62wJ/Wv+jXGAttSAcJec4iFgCWH +Rvdi/jJoSzRLa3nEzx6pFIzclSCnh0u1xCeLcUBypSiPga8W+6PkuoyQq8U9qs9E +oxG5NvrvlyshwUS9yvcZRGw7Ljlx4jJH/BhIPR8kIBCQj1vna9TziZOrw1Of8hDU +bHKFG9Pm8Dp2vbjz/2JH39qvxshPKVllGfq+5klPm7yZRUYTiCMAbqwNdL/nsqF2 +Rnnyp58XRStJ +-----END CERTIFICATE----- \ No newline at end of file diff --git a/v2_nginx/ssl/privkey.pem b/v2_nginx/ssl/privkey.pem new file mode 100644 index 0000000..de6b7bf --- /dev/null +++ b/v2_nginx/ssl/privkey.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w9 +0MkY/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G +7+EJlYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwS +qSQ9SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLc +pW6kwkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+Xr +U4CtiETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABAoIBADQVXYq7q9B6dTO0 +Z/oA974Z4lsK6aQfK4Z7J2OIenLeky3fxAVNcpW66hGzDSl6KCYnZmCGA6U3qF27 +uFAkq+eqaBhaqZu2569LtCjy7PK6LYFAgU5ROty5QJHgTcKNmXVne4iBjywx6QRC +h8eH0VnZisTNZjZkZngFSVT0W2M8XZjzXBkAH448KhRssMLB5WzJ/jToWdTqA/zg +M4dLnhSWQfgrZyzI1TA8rUu3v3UAdd37g8KCnq9+7Vtfr0rEe6K5c3JJIwKJWcXv +9GM6kC82otpHFGVXjZC040nESyeWUESaHphO3UUlQStgmUak3Bav0mniV/+6pCCq +DZL5nQECgYEA4SpSXfrD6OoJhcjT5fqBqEg6wKB8IDfy05zNqAvg5VKDylG1x+ir +umXD6znDmMSdODjHpIJR+El1Qp2DbRkDdJ3x3TTDclqFA9p7zcLBmS2FTnEfXX6o +R3M9LgkDNdqVgyzEK3e9LNZi6xCSMrRp/32eRGJqqs+KEDydBvj4eA8CgYEAwbtL +8QwSuZqEubRsz4f2sJqG4wODxl6jenYRPLXrL9BpLzzGsw460UKjaUtyzBYeJoBm +Fc+bBcyzMt6vsarzlyXpmEfDsf3+f1/l4MbcUoW3YWmrPdsQ8JuqCheRbl84h5lT +MOaiGjPlK7hnIxlq+mcnn6hnmUuObUCuGHHQeCcCgYBMQVwBzfJZSCGPeHMi+NK+ +Xi/fmrpO4wPO3NTda6BvqaFOfJu2pzq5dsuCN17htvyT1M7wDN6b2qzmsZeX9Bey +f+cwhjUG3lcb9ftltOaB7OOvrCn2LPXqtMFsfMrkizGFajzJh9S+gaCggU0x9N3N +FArsl/QOAxl75Ds96EWlywKBgCZH8kuhTRnr1Io1gsLHZRGklz7IdQN/s+IA7osG +j4CVOBOjeMfs6eZruoqV5As7251UBdgNe957gnVs117OHvAhB7WViK/lNqLIuk3e +Pa74yTGwhavlW8WPnNv9qDkdC7iPrYaeLC3tTz2CZK7k2OS9+XBtAHukGHKyMzSV +WNJFAoGAMO81Vw+bw0c4twBhRvQhpXsXT5gCiDxtS+I+9neXcmEo0JvB+JM96j7I +UNKGFVcx22LgLIJb+77Euq42x8TpLIbnxCbLsT2GKxqqrB0z+YSixXrNotqV8/FB +EYo1D+bSB7wnFbLRh4dKJ8rFAu7MSt5/KH9qRHGNtDFLETxAvmE= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/z5m7q9dk3ah2v1plx6ju.com_ssl_certificate.cer b/z5m7q9dk3ah2v1plx6ju.com_ssl_certificate.cer new file mode 100644 index 0000000..3a16651 --- /dev/null +++ b/z5m7q9dk3ah2v1plx6ju.com_ssl_certificate.cer @@ -0,0 +1,38 @@ +-----BEGIN CERTIFICATE----- +MIIGqDCCBRCgAwIBAgIRAP++iWUqjw7yOtqdDe3DXdcwDQYJKoZIhvcNAQEMBQAw +YDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE +AxMuU2VjdGlnbyBQdWJsaWMgU2VydmVyIEF1dGhlbnRpY2F0aW9uIENBIERWIFIz +NjAeFw0yNTA2MDcwMDAwMDBaFw0yNjA2MDcyMzU5NTlaMCUxIzAhBgNVBAMMGiou +ejVtN3E5ZGszYWgydjFwbHg2anUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w90MkY +/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G7+EJ +lYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwSqSQ9 +SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLcpW6k +wkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+XrU4Ct +iETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABo4IDFjCCAxIwHwYDVR0jBBgw +FoAUaMASFhgOr872h6YyV6NGUV3LBycwHQYDVR0OBBYEFD2tx0mT4AtPU2ISB5ui +xdaBPrXKMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQG +CCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUw +IwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCB +hAYIKwYBBQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28u +Y29tL1NlY3RpZ29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0 +MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTCCAX4GCisGAQQB +1nkCBAIEggFuBIIBagFoAHcAlpdkv1VYl633Q4doNwhCd+nwOtX2pPM2bkakPw/K +qcYAAAGXSz80dwAABAMASDBGAiEAwqN1tMQQth342Rir/V/0PdCs2MH0OmuoT2xZ +8tiwaikCIQCnKukR44Tt6ZJaZ+hcleqT77ug7XRIXpgEtei6avNbLgB2ABmG1Mco +qm/+ugNveCpNAZGqzi1yMQ+uzl1wQS0lTMfUAAABl0s/Mm4AAAQDAEcwRQIgEifW +JKtue9T6SyDo21oG3kX3BWzFS3b+EA0aBpe7+8YCIQC8dXbuLYzaOinK7JDtLwWT +QSveqzYirRlHT2E9OswywQB1AA5XlLzzrqk+MxssmQez95Dfm8I9cTIl3SGpJaxh +xU4hAAABl0s/MrwAAAQDAEYwRAIgK52ai/UeJMdBo/aSkvlm6jLmVIHN4/IiidX+ +AEP5A5UCIGCLtmAlmj+G3m+Qci2ex6iwW/JkpeSTCns2gCvYhcNsMD8GA1UdEQQ4 +MDaCGiouejVtN3E5ZGszYWgydjFwbHg2anUuY29tghh6NW03cTlkazNhaDJ2MXBs +eDZqdS5jb20wDQYJKoZIhvcNAQEMBQADggGBAC/vgQ15loW1Sb2gEPc00aHzxL0S +QrBFyyJAhYAu1bJRnDVZTuRsrheyKJgZJUSRUMv9j7Row4EcclNRKjzdCCK0K7wv +HFK5O1npeC0WFIKu+Wescy/a0rxXV6vSadtE/2R5NI4gZW1KW7n8+g5lcB1bqBth +JuiUKtddMCi/d04UQOasJ35OK61yHi893RnVpfs52wNik++PWPDvVahdCLMqQ6KY +SngLKlmIfuYDfTmwftTJsRGnTMsw1lUI+L9D4MeqcYmakWUcqD/v3SyijcL/M7ag +lkZoyQPy8qd/Kjgoh+hs1vscU6jotP40ZhSnCBZZZ9bw7h7RvhQY6uOgLIwKfjRG +NXbG4FkQBPLhkLwFmGnC/aZui1Eholi9h1Rz4cFZ5VDqdjsN/YIjpH/t2LHMh9Lu +njibo1dOyQqNSdILZfUGo/kii5ZMI2+TRyOZOACvbLU9mZmyGjXS4l5tc4PRhjUE +2V3Apslo+pviTCIinLPng15mzTOQxlUokLf5yg== +-----END CERTIFICATE-----