ssl
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
---
|
||||
|
||||
18
README.md
18
README.md
@@ -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"
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user