-
-
Notifications
You must be signed in to change notification settings - Fork 16
Sicherer Zugriff über TLS
CCU-Jack ermöglicht einen verschlüsselten Zugriff über HTTPS, sodass auch über unsichere Netzwerke (z.B. Internet) Daten sicher ausgetauscht werden könnan. Über den Port 2122 (änderbar mit der Konfigurationsoption HTTP.PortTLS) kann eine HTTPS-Verbindung aufgebaut werden. Analog gilt dies auch für MQTT-Verbindungen. Die dafür benötigten Zertifikate können vorgegeben werden oder werden beim ersten Start vom CCU-Jack automatisch generiert. Dies kann mit der Konfigurationsoption Certificates.AutoGenerate eingestellt werden.
Benötigte Zertifikatsdateien für den Server (vorhanden oder auto-generiert):
| Dateiname | Konfigurationsoption | Funktion |
|---|---|---|
| svrcert.pem | Certificates.ServerCertFile |
Zertifikat des Servers |
| svrcert.key | Certificates.ServerKeyFile |
Privater Schlüssel des Servers (Dieser ist geheim zu halten.) |
Falls die Zertifikatsdateien automatisch generiert werden sollen, so sind folgende Konfigurationsoptionen zu setzen. Die Gültigkeit ist auf 10 Jahre eingestellt:
| Dateiname | Konfigurationsoption | Funktion |
|---|---|---|
| cacert.pem | Certificates.CACertFile |
Zertifikat der Zertifizierungsstelle (CA) |
| cacert.key | Certificates.CACertFile |
Privater Schlüssel der Zertifizierungsstelle (Dieser ist geheim zu halten.) |
| svrcert.pem | Certificates.ServerCertFile |
Zertifikat des Servers |
| svrcert.key | Certificates.ServerKeyFile |
Privater Schlüssel des Servers (Dieser geheim zu halten.) |
Für den sicheren Zugriff muss lediglich das generierte Zertifikat der Zertifizierungsstelle (cacert.pem) den HTTPS-Clients über einen sicheren Kanal bekannt gemacht werden. Das Zertifikat kann z.B. im Betriebssystem oder im Web-Browser installiert werden. Die privaten Schlüssel dürfen nie verteilt werden.
Über verschiedene Programmiersprachen kann dann verschlüsselt zugegriffen werden.
curl --cacert path/to/cacert.pem https://hostname:2122import requests
r = requests.get("https://hostname:2122", verify='path/to/cacert.pem')
print(r.status_code)caCert, err := ioutil.ReadFile("path/to/cacert.pem")
if err != nil {
log.Fatal(err)
}
caCerts := x509.NewCertPool()
ok := caCerts.AppendCertsFromPEM(caCert)
if !ok {
log.Fatal("Failed to parse certificate")
}
con, err := tls.Dial("tcp", "hostname:2122", &tls.Config{RootCAs: caCerts})
if err != nil {
log.Fatal(err)
}
defer con.Close()var fs = require('fs');
var https = require('https');
var get = https.request({
path: '/', hostname: 'hostname', port: 2122,
ca: fs.readFileSync('path/to/cacert.pem'),
agent: false,
rejectUnauthorized: true,
}, function(response) {
response.on('data', (d) => {
process.stdout.write(d);
});
});
get.on('error', function(e) {
console.error(e)
});
get.end();Autor dieses Handbuchs ist Mathias Dzionsko. Dieses Handbuch steht unter folgender Lizenz:
