fix
This commit is contained in:
384
SSL_TROUBLESHOOTING.md
Normal file
384
SSL_TROUBLESHOOTING.md
Normal file
@@ -0,0 +1,384 @@
|
||||
# SSL-Fehlerbehebung - KeyHelp Manager Modul
|
||||
|
||||
## Übersicht
|
||||
|
||||
Das KeyHelp Manager Modul verwendet SSL/TLS-Verbindungen zur sicheren Kommunikation mit der KeyHelp API. Bei der Verwendung von IP-Adressen oder selbstsignierten Zertifikaten können SSL-Verifizierungsprobleme auftreten.
|
||||
|
||||
## Automatische SSL-Verifizierung
|
||||
|
||||
Das Modul erkennt automatisch, ob eine IP-Adresse verwendet wird und deaktiviert in diesem Fall die SSL-Zertifikatsverifizierung.
|
||||
|
||||
### Wie es funktioniert
|
||||
|
||||
```
|
||||
Hostname wird geprüft
|
||||
↓
|
||||
Ist es eine IP-Adresse? (z.B. 5.83.148.129)
|
||||
↓
|
||||
JA → SSL-Verifizierung wird automatisch deaktiviert
|
||||
↓
|
||||
NEIN → SSL-Verifizierung bleibt aktiv (Standard)
|
||||
```
|
||||
|
||||
## Häufige SSL-Fehler
|
||||
|
||||
### 1. cURL error 60: SSL certificate problem
|
||||
|
||||
**Vollständige Fehlermeldung:**
|
||||
```
|
||||
cURL error 60: SSL: no alternative certificate subject name matches target host name '5.83.148.129'
|
||||
```
|
||||
|
||||
**Ursache:**
|
||||
Das SSL-Zertifikat wurde für einen Domain-Namen ausgestellt (z.B. `server.example.com`), aber Sie verwenden eine IP-Adresse zur Verbindung.
|
||||
|
||||
**Lösung:**
|
||||
- ✅ **Automatisch gelöst:** Bei IP-Adressen deaktiviert das Modul die SSL-Verifizierung automatisch
|
||||
- ✅ **Keine manuelle Konfiguration nötig**
|
||||
|
||||
**Logging:**
|
||||
Das Modul schreibt einen Hinweis in die Activity Logs:
|
||||
```
|
||||
KeyHelp Manager: SSL verification disabled for 5.83.148.129 (IP address detected)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Self-signed Certificate Error
|
||||
|
||||
**Fehlermeldung:**
|
||||
```
|
||||
cURL error 60: SSL certificate problem: self signed certificate
|
||||
```
|
||||
|
||||
**Ursache:**
|
||||
Der KeyHelp-Server verwendet ein selbstsigniertes SSL-Zertifikat statt eines von einer vertrauenswürdigen Zertifizierungsstelle (CA) signierten Zertifikats.
|
||||
|
||||
**Lösung:**
|
||||
|
||||
#### Option A: SSL-Verifizierung manuell deaktivieren (nicht empfohlen für Produktion)
|
||||
|
||||
1. Öffnen Sie die Server-Konfiguration in WHMCS:
|
||||
- Navigieren Sie zu **Setup → Products/Services → Servers**
|
||||
- Bearbeiten Sie Ihren KeyHelp-Server
|
||||
|
||||
2. Tragen Sie im Feld **HTTP Prefix** den Wert ein:
|
||||
```
|
||||
no-verify
|
||||
```
|
||||
|
||||
3. Speichern Sie die Konfiguration
|
||||
|
||||
**Logging:**
|
||||
```
|
||||
KeyHelp Manager: SSL verification disabled for server.example.com (manual override)
|
||||
```
|
||||
|
||||
#### Option B: Gültiges SSL-Zertifikat installieren (empfohlen)
|
||||
|
||||
1. Installieren Sie Let's Encrypt auf Ihrem KeyHelp-Server:
|
||||
```bash
|
||||
# In KeyHelp unter System → SSL-Zertifikate
|
||||
```
|
||||
|
||||
2. Generieren Sie ein kostenloses Let's Encrypt Zertifikat für Ihre Domain
|
||||
|
||||
3. Stellen Sie sicher, dass KeyHelp das Zertifikat für die API verwendet
|
||||
|
||||
4. Verwenden Sie den Domain-Namen statt der IP-Adresse in WHMCS
|
||||
|
||||
---
|
||||
|
||||
### 3. Certificate has expired
|
||||
|
||||
**Fehlermeldung:**
|
||||
```
|
||||
cURL error 60: SSL certificate problem: certificate has expired
|
||||
```
|
||||
|
||||
**Ursache:**
|
||||
Das SSL-Zertifikat ist abgelaufen.
|
||||
|
||||
**Lösung:**
|
||||
1. Erneuern Sie das SSL-Zertifikat auf dem KeyHelp-Server
|
||||
2. Bei Let's Encrypt: Überprüfen Sie die automatische Erneuerung
|
||||
3. Prüfen Sie das Ablaufdatum:
|
||||
```bash
|
||||
openssl s_client -connect ihr-server.de:443 -servername ihr-server.de < /dev/null 2>/dev/null | openssl x509 -noout -dates
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. Unable to get local issuer certificate
|
||||
|
||||
**Fehlermeldung:**
|
||||
```
|
||||
cURL error 60: SSL certificate problem: unable to get local issuer certificate
|
||||
```
|
||||
|
||||
**Ursache:**
|
||||
Die Zertifikatskette ist unvollständig oder das Root-Zertifikat fehlt.
|
||||
|
||||
**Lösung:**
|
||||
1. Stellen Sie sicher, dass die vollständige Zertifikatskette auf dem KeyHelp-Server installiert ist
|
||||
2. Prüfen Sie die Zertifikatskette:
|
||||
```bash
|
||||
openssl s_client -connect ihr-server.de:443 -showcerts
|
||||
```
|
||||
3. Temporäre Lösung: Deaktivieren Sie die SSL-Verifizierung mit "no-verify"
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
|
||||
### Server-Einstellungen in WHMCS
|
||||
|
||||
```
|
||||
Setup → Products/Services → Servers → [Ihr KeyHelp Server]
|
||||
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ Name: KeyHelp Server 1 │
|
||||
│ Hostname: 5.83.148.129 ← IP-Adresse │
|
||||
│ Type: KeyHelp Manager │
|
||||
│ Username: [leer] │
|
||||
│ Password: [Ihr API-Key] │
|
||||
│ Access Hash: [leer] │
|
||||
│ Secure: ☑ On │
|
||||
│ HTTP Prefix: [leer] ← Auto bei IP │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Bei IP-Adresse:** Keine weitere Konfiguration nötig!
|
||||
|
||||
---
|
||||
|
||||
### Manuelle Deaktivierung der SSL-Verifizierung
|
||||
|
||||
```
|
||||
Setup → Products/Services → Servers → [Ihr KeyHelp Server]
|
||||
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ Name: KeyHelp Server 1 │
|
||||
│ Hostname: server.example.com │
|
||||
│ Type: KeyHelp Manager │
|
||||
│ Username: [leer] │
|
||||
│ Password: [Ihr API-Key] │
|
||||
│ Access Hash: [leer] │
|
||||
│ Secure: ☑ On │
|
||||
│ HTTP Prefix: no-verify ← Manuell │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
### ✅ Empfohlen für Entwicklung/Test
|
||||
|
||||
- IP-Adresse verwenden (SSL-Verifizierung wird automatisch deaktiviert)
|
||||
- Oder "no-verify" bei selbstsignierten Zertifikaten
|
||||
|
||||
### ✅ Empfohlen für Produktion
|
||||
|
||||
1. **Verwenden Sie einen Domain-Namen** statt einer IP-Adresse
|
||||
```
|
||||
Statt: 5.83.148.129
|
||||
Nutzen: keyhelp.example.com
|
||||
```
|
||||
|
||||
2. **Installieren Sie ein gültiges SSL-Zertifikat**
|
||||
- Let's Encrypt (kostenlos)
|
||||
- Commercial CA (Comodo, DigiCert, etc.)
|
||||
|
||||
3. **DNS korrekt konfigurieren**
|
||||
```
|
||||
keyhelp.example.com → A Record → 5.83.148.129
|
||||
```
|
||||
|
||||
4. **SSL-Verifizierung aktiviert lassen**
|
||||
- HTTP Prefix: [leer lassen]
|
||||
- Secure: On
|
||||
|
||||
### ⚠️ Sicherheitshinweise
|
||||
|
||||
| Szenario | SSL-Verifizierung | Sicherheit | Empfohlen für |
|
||||
|----------|-------------------|------------|---------------|
|
||||
| IP-Adresse mit gültigem Cert | Auto aus | Mittel | Test/Dev |
|
||||
| Domain mit gültigem Cert | An | Hoch | Produktion |
|
||||
| Selbstsigniertes Cert | Manuell aus | Niedrig | Nur Test |
|
||||
| Abgelaufenes Cert | - | Unsicher | ❌ Nie |
|
||||
|
||||
---
|
||||
|
||||
## Logs überprüfen
|
||||
|
||||
### WHMCS Activity Log
|
||||
|
||||
```
|
||||
System Settings → Activity Log
|
||||
|
||||
Filter nach: "KeyHelp Manager: SSL verification disabled"
|
||||
```
|
||||
|
||||
**Beispiel-Einträge:**
|
||||
```
|
||||
KeyHelp Manager: SSL verification disabled for 5.83.148.129 (IP address detected)
|
||||
KeyHelp Manager: SSL verification disabled for server.example.com (manual override)
|
||||
```
|
||||
|
||||
### WHMCS Module Log
|
||||
|
||||
```
|
||||
Utilities → Logs → Module Log
|
||||
|
||||
Filter: keyhelpmanager
|
||||
```
|
||||
|
||||
Hier sehen Sie alle API-Requests und Responses inkl. SSL-Fehlern.
|
||||
|
||||
---
|
||||
|
||||
## Debugging
|
||||
|
||||
### Test 1: Manuelle API-Verbindung
|
||||
|
||||
**Mit SSL-Verifizierung:**
|
||||
```bash
|
||||
curl https://5.83.148.129/api/v2/server/version \
|
||||
-H "X-API-Key: IHR_API_KEY" \
|
||||
-H "Accept: application/json"
|
||||
```
|
||||
|
||||
**Ohne SSL-Verifizierung:**
|
||||
```bash
|
||||
curl -k https://5.83.148.129/api/v2/server/version \
|
||||
-H "X-API-Key: IHR_API_KEY" \
|
||||
-H "Accept: application/json"
|
||||
```
|
||||
|
||||
Der `-k` Parameter entspricht `verify => false` in Guzzle.
|
||||
|
||||
---
|
||||
|
||||
### Test 2: SSL-Zertifikat überprüfen
|
||||
|
||||
**Zertifikat-Informationen anzeigen:**
|
||||
```bash
|
||||
openssl s_client -connect 5.83.148.129:443 -servername keyhelp.example.com < /dev/null 2>/dev/null | openssl x509 -noout -text
|
||||
```
|
||||
|
||||
**Prüfen Sie:**
|
||||
- Subject: CN (Common Name)
|
||||
- Subject Alternative Name (SAN)
|
||||
- Validity: Not Before / Not After
|
||||
- Issuer
|
||||
|
||||
---
|
||||
|
||||
### Test 3: PHP Guzzle Test-Script
|
||||
|
||||
Erstellen Sie eine Test-Datei `test_keyhelp_ssl.php`:
|
||||
|
||||
```php
|
||||
<?php
|
||||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
$hostname = '5.83.148.129';
|
||||
$apiKey = 'IHR_API_KEY';
|
||||
|
||||
// Test mit SSL-Verifizierung
|
||||
$client = new Client([
|
||||
'verify' => true,
|
||||
'timeout' => 10,
|
||||
]);
|
||||
|
||||
try {
|
||||
$response = $client->get("https://{$hostname}/api/v2/server/version", [
|
||||
'headers' => [
|
||||
'X-API-Key' => $apiKey,
|
||||
'Accept' => 'application/json',
|
||||
],
|
||||
]);
|
||||
echo "✅ Mit SSL-Verifizierung: Erfolg!\n";
|
||||
echo $response->getBody();
|
||||
} catch (Exception $e) {
|
||||
echo "❌ Mit SSL-Verifizierung: Fehler!\n";
|
||||
echo $e->getMessage() . "\n\n";
|
||||
}
|
||||
|
||||
// Test ohne SSL-Verifizierung
|
||||
$client = new Client([
|
||||
'verify' => false,
|
||||
'timeout' => 10,
|
||||
]);
|
||||
|
||||
try {
|
||||
$response = $client->get("https://{$hostname}/api/v2/server/version", [
|
||||
'headers' => [
|
||||
'X-API-Key' => $apiKey,
|
||||
'Accept' => 'application/json',
|
||||
],
|
||||
]);
|
||||
echo "✅ Ohne SSL-Verifizierung: Erfolg!\n";
|
||||
echo $response->getBody();
|
||||
} catch (Exception $e) {
|
||||
echo "❌ Ohne SSL-Verifizierung: Fehler!\n";
|
||||
echo $e->getMessage();
|
||||
}
|
||||
```
|
||||
|
||||
Führen Sie aus:
|
||||
```bash
|
||||
php test_keyhelp_ssl.php
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
### IP-Adresse verwenden (Automatisch)
|
||||
|
||||
```
|
||||
Hostname: 5.83.148.129
|
||||
HTTP Prefix: [leer]
|
||||
→ SSL-Verifizierung: Automatisch deaktiviert ✅
|
||||
```
|
||||
|
||||
### Domain mit selbstsigniertem Zertifikat (Manuell)
|
||||
|
||||
```
|
||||
Hostname: server.example.com
|
||||
HTTP Prefix: no-verify
|
||||
→ SSL-Verifizierung: Manuell deaktiviert ✅
|
||||
```
|
||||
|
||||
### Domain mit gültigem Zertifikat (Empfohlen)
|
||||
|
||||
```
|
||||
Hostname: keyhelp.example.com
|
||||
HTTP Prefix: [leer]
|
||||
→ SSL-Verifizierung: Aktiv ✅✅✅
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Support
|
||||
|
||||
Bei weiteren SSL-Problemen:
|
||||
|
||||
1. **WHMCS Module Log prüfen:** Utilities → Logs → Module Log
|
||||
2. **Activity Log prüfen:** System Settings → Activity Log
|
||||
3. **KeyHelp Logs prüfen:** `/var/log/keyhelp/`
|
||||
4. **PHP Error Log prüfen:** `/var/log/php/error.log`
|
||||
|
||||
**Kontakt:**
|
||||
- E-Mail: info@avvgo.de
|
||||
- Website: https://avvgo.de
|
||||
|
||||
---
|
||||
|
||||
**Entwickelt von:** Kevin Feiler / AVVGO
|
||||
**Version:** 2.0.0
|
||||
**Letzte Aktualisierung:** 2024
|
||||
Reference in New Issue
Block a user