HTTPS-Zertifikat

Für den Zugriff auf die Web API und ihre integrierte API-Dokumentation ist ein HTTPS-Zertifikat erforderlich.

Ein selbstsigniertes Zertifikat wird automatisch installiert und bei der Installation verwendet (Computerzertifikate). Alternativ kann auch ein Let's Encrypt-Zertifikat verwendet werden.

Verwendung von Let's Encrypt (ACME-Protokoll)

Let's Encrypt ermöglicht Ihnen die Verwaltung von Zertifikaten für eine bestimmte Domäne. Bestehende Zertifikate werden durch die Überprüfung des Ablaufdatums auf dem neuesten Stand gehalten und ein neues Zertifikat wird installiert, wenn keines vorhanden ist.

Wie Sie Let's Encrypt verwenden:

  1. Installieren Sie die Web API.

  2. Konfigurieren Sie Ihr Netzwerk (siehe Netzwerk-Konfiguration).

  3. Bearbeiten Sie den Abschnitt Let's Encrypt in der Datei appsettings.json (siehe Let's Encrypt Konfiguration).

  4. Starten Sie den Dienst neu.

  5. Stellen Sie sicher, dass das Let's Encrypt-Zertifikat installiert ist.

  6. Fügen Sie der Datei appsettings.json das neue zu verwendende Zertifikat hinzu (siehe Zertifikat verwenden).

  7. Starten Sie den Dienst neu.

  8. Rufen Sie die Swagger-Webseite über den neuen Domänennamen auf, um sicherzustellen, dass das Zertifikat verwendet wird (siehe HTTPS REST API).

Netzwerk-Konfiguration

Um ein TLS-Zertifikat für eine Domäne zu erstellen und zu verwalten, müssen Sie Ihr Netzwerk richtig konfigurieren. Der IPv4-Listener des Let's Encrypt-Moduls reagiert auf Port 13020. Der Dienst führt eine HTTP-01-Abfrage durch, um die Zertifikatsanforderung zu validieren.

Die HTTP-01-Abfrage kann nur auf Port 80 durchgeführt werden. Sie müssen daher auf Ihrem Internet-Router/Firewall eine Portweiterleitung von Port 80 auf den internen Port 13020 des Web API Servers konfigurieren.

Der Server muss Port 13020 für diese Kommunikation öffnen.

Let's Encrypt Konfiguration

Um das Let's Encrypt-Modul zu aktivieren, müssen Sie die Datei appsettings.json konfigurieren.

Konfigurieren Sie den Abschnitt LetsEncrypt und setzen Sie den Parameter active auf true. Ein Beispiel kann wie folgt aussehen:

Kopieren
"LetsEncrypt": {
    "active": true,
    "staging": false,
    "user": "anybody.surname@company.com",
    "domain": "sample.dns.net",
    "chronSchedule": "0 0 * * * ?",
    "renewbeforeexpireddays": 30
  },

Sie können folgende Parameter im Abschnitt LetsEncrypt in der Datei appsettings.json konfigurieren:

Einstellung

Beschreibung

activ

Um das Let's Encrypt-Modul (ACME-Modul) zu aktivieren, setzen Sie diesen Parameter auf true.

Um das generierte Zertifikat zu verwenden, ändern Sie den Subject-Parameter von HttpsInlineCertStore in den Domänennamen, nachdem das Zertifikat erfolgreich generiert wurde.

staging

Let's Encrypt bietet eine Testumgebung für Testzwecke. Wenn Sie diesen Parameter auf true setzen, kommuniziert der Dienst mit dieser Testumgebung.

Verwenden Sie diesen Parameter nicht zur Erstellung von Zertifikaten. Wenn Sie die Testumgebung verwenden, wird ein ungültiges Zertifikat erstellt, aber nicht installiert.

Um ein gültiges Zertifikat anzufordern, setzen Sie den Parameter auf false.

Beachten Sie, dass die Anzahl der Zertifikate für einen Domainnamen durch Let's Encrypt begrenzt ist.

user

Die E-Mail-Adresse des Benutzers, der ein Zertifikat anfordert. Das Modul erstellt entweder ein neues Konto oder verwendet automatisch das bereits bestehende Konto. Die E-Mail-Adresse wird von dem Dienst Let's Encrypt verwendet.

Weitere Informationen finden Sie unter: https://letsencrypt.org/docs/expiration-emails/

domain

Das vom Dienst verwaltete Zertifikat wird für die angegebene Domäne ausgestellt. Es ist auch das Subject des Zertifikats, wenn es installiert wird, und wird verwendet, um die Zertifikate in der Aktualisierungsroutine des Moduls zu identifizieren.

chronSchedule

Der Dienst überprüft regelmäßig die Gültigkeit des Zertifikats. Der Parameter chronSchedule legt die Zeitspanne fest, in der die Überprüfungen durchgeführt werden. Standardmäßig wird eine Überprüfung stündlich durchgeführt. Beim Start des Dienstes wird das Zertifikat einmal überprüft und gegebenenfalls erstellt oder aktualisiert.

renewbeforeexpireddays

Der Parameter renewbeforeexpireddays bestimmt, wie viele Tage vor Ablauf das Zertifikat automatisch erneuert wird.

Verwenden Sie die Testumgebung von Let's Encrypt, um sicherzustellen, dass alle anderen Einstellungen und die Netzwerkkonfiguration korrekt sind. Anschließend können Sie die Testumgebung sicher deaktivieren. Weitere Informationen zur Verwendung von Let's Encrypt finden Sie in den Web API Protokolldateien (siehe Service-Protokolldateien).

Zertifikat verwenden

Um ein Zertifikat auszuwählen, konfigurieren Sie den Abschnitt HttpsInlineCertStore in der Datei appsettings.json. Der Dienst lädt das Zertifikat einmal beim Start. Um das Zertifikat zu verwenden, setzen Sie den Parameter Subject auf das Subject des Zertifikats. Standardmäßig wird das selbstsignierte Zertifikat geladen.

Erstellen Sie zunächst ein Zertifikat mit Let's Encrypt und passen Sie dann den Subject für HttpsInlineCertStore an. Solange kein Zertifikat gefunden wird, wird der Web API Dienst nicht gestartet.

Das Let's Encrypt-Modul erstellt ein Zertifikat für den Domänennamen Ihres Systems. Diese Domäne ist auch das Subject des generierten Zertifikats.

Stellen Sie sicher, dass der Parameter Url nicht für eine bestimmte Domäne konfiguriert ist. Verwenden Sie https://*:13333 oder https://0.0.0.0:13333 (Port 13333 kann in einen beliebigen anderen Port geändert werden), um eine beliebige Domäne des Servers abzuhören. Der Dienst ist lokal über localhost (127.0.0.1) oder extern über den konfigurierten Domainnamen erreichbar.

Kopieren
 "HttpsInlineCertStore": {
    "Url": "https://*:13333",
    "Certificate": {
      "Subject": "sample.dns.net",
      "Store": "My",
      "Location": "LocalMachine"
    }
  },

Weitere Informationen

Lokale Portweiterleitung

Wenn Sie eine lokale Portweiterleitung auf dem System benötigen, auf dem die Web API installiert ist, verwenden Sie den folgenden cmd-Befehl:

Kopieren
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=13020 connectaddress=127.0.0.1

DynDNS

Sie können einen DynDNS-Dienst nutzen, um einen Domänennamen für Ihre Einwahlverbindungen zu erhalten. Die meisten Router unterstützen mehrere DnyDNS-Dienste. DuckDNS.org ist beispielsweise ein kostenloser und benutzerfreundlicher Dienst, den Sie dafür nutzen können.

Fritz Box Benutzer

Wenn Sie die MyFritz-Funktion Ihrer Fritz!Box aktivieren, hat die Fritz!Box einen integrierten Domainnamen. Damit erhalten Sie einen Domänennamen für Ihre Einwahlverbindung, z. B.: 1234abcd.myfritz.net.

Um diesen Domainnamen verwenden zu können, müssen Sie IPv6 im Internetanschluss deaktivieren. Andernfalls funktioniert die Portweiterleitung von Port 80 auf IPv4 nicht und leitet Sie immer auf die Anmeldeseite der Fritz Box um.

Warum sind HTTPS-Zertifikate wichtig?

Die Erstellung eines SSL-Zertifikats für eine HTTPS-Verbindung trägt dazu bei, die Sicherheit und den Datenschutz Ihrer Inhalte zu gewährleisten und die Sicherheitsstandards für Cyber-Security zu erfüllen.

Vollständige Verschlüsselung der übertragenen Daten

Eine HTTPS-Verbindung mit SSL-Zertifikat bietet eine zusätzliche Sicherheitsstufe für Ihr G-Core System sowie für den Operator. Durch das SSL-Zertifikat werden die über das Internet übertragenen Daten vollständig verschlüsselt, um die sensiblen Informationen vor dem Abfangen und der Manipulation durch Dritte zu schützen.

Sichere Verbindung in Webbrowsern

In weitgehend allen Webbrowsern werden HTTP-Verbindungen als unsicher ausgewiesen. Der Webbrowser Firefox bietet sogar die erweiterte Sicherheitsfunktion "Nur-HTTPS-Modus". Tendenziell werden HTTP-Verbindungen künftig nicht mehr zugelassen oder der Zugriff stark eingeschränkt.

Eigenverantwortung und Kontrolle über Ihre Inhalte

Indem Sie Ihre eigenen SSL-Zertifikate generieren, behalten Sie die Eigenverantwortung und Kontrolle über Ihre Inhalte. Dies gewährleistet, dass Ihre Inhalte sicher und entsprechend Ihren spezifischen Anforderungen übertragen werden.