This commit is contained in:
Kevin Feiler
2025-10-16 03:34:17 +02:00
parent cbb20ba6ce
commit dccf4b1b4e
4 changed files with 64 additions and 8 deletions

View File

@@ -7,6 +7,18 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/).
## [Unreleased]
### Hinzugefügt
- **Automatische SSL-Verifizierung bei IP-Adressen:**
- SSL-Verifizierung wird automatisch deaktiviert wenn eine IP-Adresse als Hostname verwendet wird
- Behebt "cURL error 60: SSL certificate problem" bei IP-Adressen
- Manuelle Deaktivierung möglich über HTTP Prefix "no-verify"
- Logging-Hinweis wenn SSL-Verifizierung deaktiviert wird
### Dokumentation
- Neue Datei `SSL_TROUBLESHOOTING.md` mit umfassender SSL-Fehlerbehandlung
- README.md erweitert um SSL-Konfigurationshinweise
- QUICKSTART.md aktualisiert mit SSL-Best-Practices
### Geplant
- Multi-Language Support (Deutsch/Englisch)
- Automatische Backup-Verwaltung

View File

@@ -27,13 +27,19 @@ Oder manuell:
```
Name: KeyHelp Server 1
Hostname: keyhelp.example.com
Hostname: keyhelp.example.com (oder IP: 5.83.148.129)
Type: KeyHelp Manager
Password: [DEIN-API-KEY-HIER]
Secure (SSL): ✓ (aktivieren)
Active: ✓ (aktivieren)
HTTP Prefix: [leer lassen - bei IP automatisch]
```
> **💡 SSL-Hinweis:**
> - Bei **IP-Adresse** (z.B. `5.83.148.129`): SSL-Verifizierung wird automatisch deaktiviert
> - Bei **Domain** (z.B. `keyhelp.example.com`): Stelle sicher, dass ein gültiges SSL-Zertifikat installiert ist
> - Bei **selbstsigniertem Zertifikat**: Trage `no-verify` im Feld "HTTP Prefix" ein
4. Klicke: **Test Connection** → "Connection Successful!" ✅
5. Speichern: **Save Changes**
@@ -229,6 +235,11 @@ Nach der Erstellung sehen Kunden:
### "Connection failed"
→ Hostname, API-Key und SSL-Einstellungen prüfen
### "cURL error 60: SSL certificate problem"
→ Bei IP-Adresse: Wird automatisch gelöst!
→ Bei selbstsigniertem Zertifikat: "no-verify" im HTTP Prefix eintragen
→ Details: [SSL_TROUBLESHOOTING.md](SSL_TROUBLESHOOTING.md)
### API-Key funktioniert nicht
→ In KeyHelp prüfen: Key hat Admin-Rechte?
@@ -257,6 +268,9 @@ Nach der Erstellung sehen Kunden:
### Funktionieren alte Accounts nach dem Update?
**Ja!** Bestehende Accounts funktionieren weiterhin ohne Änderungen.
### Kann ich eine IP-Adresse statt Domain verwenden?
**Ja!** Das Modul erkennt IP-Adressen automatisch und deaktiviert die SSL-Verifizierung.
### Kann ich Templates nachträglich ändern?
**Ja!** Einfach in der Produktkonfiguration ändern und speichern.
@@ -281,10 +295,14 @@ Templates nur in KeyHelp löschen, wenn keine aktiven Accounts damit verbunden s
3. **SSL immer aktivieren**
- Sicher und empfohlen!
4. **Templates regelmäßig synchronisieren**
4. **IP vs. Domain für Hostname**
- 🧪 Entwicklung/Test: IP-Adresse ist OK (SSL-Check automatisch aus)
- 🚀 Produktion: Domain mit gültigem SSL-Zertifikat (Let's Encrypt)
5. **Templates regelmäßig synchronisieren**
- Nach Änderungen in KeyHelp: Sync klicken
5. **Test-Account behalten**
6. **Test-Account behalten**
- Zum schnellen Testen von Änderungen
---

View File

@@ -141,9 +141,12 @@ Bei der Einrichtung des Servers in WHMCS können Sie folgende Optionen konfiguri
| **Hostname (IP or FQDN)** | Text | Hostname oder IP-Adresse des KeyHelp-Servers | - |
| **API Key** | Password | Ihr KeyHelp API-Schlüssel | - |
| **Use SSL** | Yes/No | SSL für API-Verbindungen verwenden | On |
| **Verify SSL Certificate** | Yes/No | SSL-Zertifikat überprüfen | On |
| **HTTP Prefix** | Text | Optional: "no-verify" für manuelles Deaktivieren der SSL-Verifizierung | - |
> **Hinweis:** Bei selbstsignierten SSL-Zertifikaten sollten Sie "Verify SSL Certificate" deaktivieren.
> **Hinweis zur SSL-Verifizierung:**
> - Bei Verwendung einer **IP-Adresse** wird die SSL-Verifizierung automatisch deaktiviert
> - Bei selbstsignierten SSL-Zertifikaten mit Domain-Namen: Tragen Sie "no-verify" im Feld "HTTP Prefix" ein
> - Für Produktivumgebungen wird immer ein gültiges SSL-Zertifikat empfohlen
### Produkt-Konfiguration
@@ -312,7 +315,16 @@ Admin wird direkt in KeyHelp eingeloggt
**Lösung:**
1. Prüfen Sie die Firewall-Einstellungen
2. Testen Sie die Verbindung manuell: `curl -k https://ihr-server.de/api/v2/server/version -H "X-API-Key: IHR_KEY"`
3. Bei selbstsigniertem Zertifikat: Deaktivieren Sie "Verify SSL Certificate"
3. Bei selbstsigniertem Zertifikat: Tragen Sie "no-verify" im Feld "HTTP Prefix" ein
### "cURL error 60: SSL certificate problem"
**Ursache:** SSL-Zertifikat stimmt nicht mit dem Hostnamen überein (häufig bei IP-Adressen oder selbstsignierten Zertifikaten)
**Lösung:**
1. **Bei IP-Adresse:** Das Modul deaktiviert die SSL-Verifizierung automatisch
2. **Bei selbstsigniertem Zertifikat mit Domain:** Tragen Sie "no-verify" im Feld "HTTP Prefix" der Server-Konfiguration ein
3. **Empfohlen für Produktion:** Verwenden Sie ein gültiges SSL-Zertifikat von Let's Encrypt oder einem anderen CA
### "Domain konnte nicht hinzugefügt werden"

View File

@@ -58,8 +58,11 @@ function _keyhelpmanager_APIRequest(
$apiKey = $params["serveraccesshash"] ?? "";
$useSSL = $params["serversecure"] ?? "on";
// Verify SSL is enabled by default for security
$verifySSL = "on";
// Check if SSL verification should be disabled
// Automatically disable for IP addresses or if serverhttpprefix is set to "no-verify"
$httpPrefix = $params["serverhttpprefix"] ?? "";
$isIpAddress = filter_var($hostname, FILTER_VALIDATE_IP) !== false;
$verifySSL = $httpPrefix === "no-verify" || $isIpAddress ? "off" : "on";
if (empty($hostname) || empty($apiKey)) {
return [
@@ -72,6 +75,17 @@ function _keyhelpmanager_APIRequest(
$protocol = $useSSL === "on" ? "https" : "http";
$url = sprintf("%s://%s/api/v2%s", $protocol, $hostname, $endpoint);
// Log warning if SSL verification is disabled
if ($verifySSL === "off") {
logActivity(
"KeyHelp Manager: SSL verification disabled for " .
$hostname .
($isIpAddress
? " (IP address detected)"
: " (manual override)"),
);
}
$client = new \GuzzleHttp\Client([
"verify" => $verifySSL === "on",
"timeout" => 30,