Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sv translation
languagede

Einführung

SSL- oder TLS-Zertifikate sind ein bekannter Industriestandard für Verschlüsselung und Sicherheit. Sie werden heute auf praktisch jeder Website verwendet. Auf dieser Seite werden die verschiedenen Szenarien für die Implementierung von SSL-Zertifikaten mit Ihrer jtel ACD erläutert und eine Anleitung für die Installation gegeben.

Info
titleNote

Technisch gesehen wird SSL schon seit langem nicht mehr verwendet. Vielmehr ist TLS oder Transport Layer Security der sicherere Nachfolger von SSL und seit langem in Gebrauch. Das Wort SSL wird jedoch immer noch häufig verwendet, um diese Familie von Zertifikaten, Standards und Funktionen zu bezeichnen. Wir werden daher auch für die folgende Erklärung das Wort SSL verwenden

Ihre jtel ACD Mit SSL

Der Zugang zu Ihrer jtel ACD kann durch SSL gesichert werden. Ein Zertifikat wird auf dem jtel Load Balancer installiert, um SSL-Verschlüsselung beim Zugriff auf Ihr jtel Portal, Chat oder WhatsApp API, REST oder SOAP API zu ermöglichen. Kurz gesagt, alles, was Sie sicher über das öffentliche Internet zugänglich machen wollen.

Je nach Standort Ihres Systems gibt es einige Unterschiede. Wenn Sie eine Lizenz in der jtel Cloud-Umgebung erworben haben, wird Ihr Zertifikat das ganze Jahr über von jtel bereitgestellt und verwaltet. Bei On-Premise-Systemen müssen Sie jedoch Ihr eigenes SSL-Zertifikat bereitstellen. Bei den Cloud-Systemen unserer Partner kann das Zertifikat von Ihnen oder von unserem Partner bereitgestellt werden.

jtel Cloud

Das Zertifikat wird von jtel bereitgestellt und ganzjährig verwaltet.

jtel Partner Cloud

Bei den Cloud-Systemen unserer Partner wird das Zertifikat entweder von unserem Partner oder von Ihnen bereitgestellt.

jtel On Premise

Das Zertifikat wird von Ihnen zur Verfügung gestellt.

Vorbereitung

Wenn Sie das SSL-Zertifikat für Ihre jtel-Installation zur Verfügung stellen, sind die folgenden Dinge erforderlich, die im Folgenden beschrieben werden.

Info

Der in diesem Beispiel verwendete DNS-Name lautet wie folgt:

jtel.beispiel.com

Der in diesem Beispiel verwendete DNS-Name lautet Die in diesem Beispiel verwendete Gateway-IP-Adresse lautet wie folgt: folgt:

xx.xxx.xx.xxx

Benennen der Website / DNS

Bevor Sie ein neues Zertifikat erwerben oder ein bereits vorhandenes verwenden, müssen Sie einen Namen für die Website des jtel Portals wählen. Unser Beispielname ist jtel.beispiel.com

Dieser Name muss dann in Ihrer öffentlichen DNS-Zone (Azure DNS, Google DNS oder das DNS Ihres Internet-Providers) konfiguriert werden, um sicherzustellen, dass der Datenverkehr zu diesem Internet-Domain-Namen zu Ihrem Gateway/Firewall/Router geleitet wird, der Ihre externe IP-Adresse verwaltet.

Die unten stehende IP-Adresse ist die öffentliche IP-Adresse Ihres Gateways / Ihrer Firewall. Der Eintragstyp "A" steht für einen "Adresseintrag" und wird verwendet, um die Subdomain jtel.beispiel.com auf die IP-Adresse des Gateways / der Firewall / des Routers zu verweisen.

DNS-NameEintragstypDNS-ZoneIP-Adresse
jtelAbeispiel.comxx.xxx.xx.xxx

Routen von https Anfragen 

Das Gateway / die Firewall / der Router muss so konfiguriert werden, dass eingehende https-Anfragen an Port 443 an die interne IP-Adresse des jtel Load Balancer weitergeleitet werden.

Dies wird in der Regel durch 1:1 oder Port-Weiterleitungsregeln im betreffenden Gateway / in der Firewall erreicht (wie genau dies zu bewerkstelligen ist, kann von Hersteller zu Hersteller variieren und wird in diesem Artikel nicht behandelt).

Das Zertifikat wird auf dem jtel Load Balancer installiert, der die https-Anfrage entschlüsselt und den Datenverkehr per http an den Webserver, Chatserver etc. weiterleitet.

Eine vereinfachte Erklärung der Route könnte wie folgt aussehen:

  • https Anfrage von einem Gerät
  • → Reise durch das öffentliche Internet
  • Ihr Gateway
  • → Unveränderte https Anfrage 
  • jtel Load Balancer
  • Entschlüsselte http Anfrage
  • jtel Webserver

SSL Zertifikatskette

Eine SSL-Zertifikatskette besteht aus mehreren Teilen, die eine Kette von Zertifikaten bilden.

  • Stammzertifikate (Root certificates) sind vertrauenswürdig, da die meisten Internetbrowser und Geräte den weltweit bekannten Stammzertifizierungsstellen (root certificate authorities) bereits vertrauen.
  • Da die wenigen Stammzertifizierungsstellen nicht alle Browseranfragen weltweit bearbeiten können, werden Zwischenzertifizierungsstellen (intermediate certificate authorities) eingesetzt, um die Last zu verteilen. Zertifikate, die eine Zwischenzertifizierungsstelle identifizieren, werden von der Stammzertifizierungsstelle ausgestellt.
  • Es kann mehr als eine Zwischenzertifizierungsstelle geben, die mit einem vertrauenswürdigen Zertifikat von der zuvor vertrauenswürdigen Zwischenzertifizierungsstelle ausgestattet wird usw. Die letzte wird von der Stammzertifizierungsstelle als vertrauenswürdig eingestuft.
  • Das Serverzertifikat ist dasjenige, das den Endserver identifiziert, in unserem Fall jtel.example.com

Das Serverzertifikat enthält den öffentlichen Schlüssel des Servers, mit dem Informationen verschlüsselt werden können, die nur der Server entschlüsseln kann (zumindest ist das heute, am 11.07.2023, noch der Fall, aber Verbesserungen im Quantencomputing könnten dies in Zukunft ändern ...).

Die Überprüfung der Zertifikatskette erfolgt in umgekehrter Richtung:

  • Die Zertifikatsignatur wird anhand des öffentlichen Schlüssels im Zertifikat des Ausstellers (der nächste in der Kette) überprüft.
  • und so weiter
  • Bis das Stammzertifikat erreicht ist. Dieses Zertifikat kann verifiziert werden, da der Browser weiß, dass dieses Zertifikat eine vertrauenswürdige Instanz ist und daher einfach vergleichen kann, was er weiß, mit dem, was der Server in der Zertifikatskette angibt.

Die vollständige Zertifikatskette ist für die Installation erforderlich. Diese besteht aus mehr als einem Abschnitt:

Zertifikatsketten-SektionErklärungBeispiel DateinameNotiz

Endteilnehmer-Zertifikat

Alias Server Zertifikat

Dieser Zertifikatsabschnitt ist eine digital signierte Erklärung, die von der Zertifizierungsstelle ausgestellt wurde und den öffentlichen Schlüssel und den Betreff des Zertifikats enthält.

end_entity_cetificate.crt

Dieses Zertifikat bindet den öffentlichen Schlüssel (Public Key) an die darin enthaltenen Identifizierungsinformationen (Betreff).  Der Betreff in unserem Beispiel wäre jtel.beispiel.com
ZwischenzertifikatDieser Zertifikatsabschnitt ist ein Zertifikat, das vom Stammzertifikat signiert und authentifiziert wird. Der Abschnitt fungiert als Mittelsmann zwischen der Endinstanz (end entity) und dem Stammzertifikat (root-zertifikat).

intermediate_certificate.crt

More than one intermediate certificates can exist in a chain, but at least one is requiredEs kann mehr als ein Zwischenzertifikat in einer Kette geben, aber mindestens eines ist erforderlich.
StammzertifikatA root certificate is a trusted certificate which sits at the top of the certificate chain. It identifies and belongs to the trusted CA Ein Stammzertifikat (root-zertifikat) ist ein vertrauenswürdiges Zertifikat, das an der Spitze der Zertifikatskette steht. Es identifiziert die vertrauenswürdige Zertifizierungsstelle (Certificate Authority) und gehört dieser.

root_certificate.crt

The root certificate is used to issue intermediate certificates. All certificates issued by a root certificate inherit the trust of the root certificate
Das Stammzertifikat wird zur Ausstellung von Zwischenzertifikaten verwendet. Alle Zertifikate, die von einem Stammzertifikat ausgestellt werden, erben das Vertrauen des Stammzertifikats.
Privater Schlüssel

Der private Schlüssel ist ein eindeutiger Schlüssel, der von der Partei generiert wird, die das Zertifikat in einer CSR (Certificate Signing Request) beantragt.

Es ist der Teil der Kette, der immer geheim gehalten und niemals weitergegeben wird. Es sollte nach Möglichkeit nur lokal auf dem Rechner installiert werden, auf dem die Zertifikatskette installiert ist

The private key is a unique key generated by the party who requests the certificate in a CSR (certificate signing request).

It is the part of the chain which is always kept secret and never shared. It should if possible only be installed locally on the machine where the certificate chain is installed.

private_key.key

The private key is used to decrypt the incoming messages which were encrypted using the public key contained in the certificate.

TLS

The last step is using TLS to establish secure communications.

This is a short explanation of how this works (by no means technically complete - there are plenty of good references out there if you really want to find out exactly how it works, however this explanation captures the essence of what is happening):

  • The client contacts the server on port 443 and requests a secure connection
  • The server responds using it's certificate chain (without the private key) 
  • The client verifies the certificate chain as described above
  • The client generates a random encryption key which it sends to the server after encrypting it with the public key of the server provided in the certificate
  • Only the server can decrypt this using the private key. It then uses the key generated by the client to encrypt a session key, which it sends back to the client.
  • Only the client knows the random encryption key it used, and so it can decrypt the session key.
  • Now, the session key is established, and the end to end encryption uses the symmetric session key for the duration of the TCP connection to encrypt all data.

Installation

If your system previously had no certificate installed and was running via http, start here. If you are exchanging your certificate before its expiry and your jtel ACD was configured for https before, start here.

Anchor
http
Der private Schlüssel wird zur Entschlüsselung der eingehenden Nachrichten verwendet, die mit dem im Zertifikat enthaltenen öffentlichen Schlüssel verschlüsselt wurden.

TLS

Der letzte Schritt ist die Verwendung von TLS, um eine sichere Kommunikation herzustellen.

Dies ist eine kurze Erläuterung der Funktionsweise (keineswegs technisch vollständig - es gibt viele gute Referenzen, wenn Sie wirklich herausfinden wollen, wie es genau funktioniert, aber diese Erklärung fasst das Wesentliche zusammen, was passiert):

  • Der Client kontaktiert den Server über Port 443 und fordert eine sichere Verbindung an
  • Der Server antwortet mit seiner Zertifikatskette (ohne den privaten Schlüssel)
  • Der Client verifiziert die Zertifikatskette wie oben beschrieben
  • Der Client generiert einen zufälligen Chiffrierschlüssel, den er an den Server sendet, nachdem er ihn mit dem im Zertifikat angegebenen öffentlichen Schlüssel des Servers verschlüsselt hat.
  • Nur der Server kann diesen mit Hilfe des privaten Schlüssels entschlüsseln. Anschließend verschlüsselt er mit dem vom Client generierten Schlüssel einen Sitzungsschlüssel, den er an den Client zurücksendet.
  • Nur der Client kennt den von ihm verwendeten zufälligen Verschlüsselungsschlüssel und kann daher den Sitzungsschlüssel entschlüsseln.
  • Nun wird der Sitzungsschlüssel festgelegt, und die Ende-zu-Ende-Verschlüsselung verwendet den symmetrischen Sitzungsschlüssel für die Dauer der TCP-Verbindung zur Verschlüsselung aller Daten.

Installation

Wenn ihr System zuvor kein Zertifikat installiert hatte und über http lief, beginnen Sie hier. Wenn Sie Ihr Zertifikat vor dessen Ablauf austauschen und Ihre jtel ACD zuvor für https konfiguriert war, beginnen Sie hier

Anchor
http
http

Ändern Sie die Haproxy-Konfiguration auf https

Für Systeme mit einem Load Balancer und HAProxy verwenden Sie dies.

Für redundante Systeme mit zwei Load Balancern und HaProxys verwenden Sie dies

http

Change the haproxy configuration to https

For systems with one Load Balancer and HAProxy use this.

For redundant systems with two Load Balancers and HaProxys use this.

Anchor
https
https

Create the

haproxy.pem

file

Datei erstellen

Die Zertifikatskette wird unter Linux mit einem einfachen cat-Befehl zusammengestelltThe certificate chain will be put together with a simple cat command in Linux.

Code Block
titleGenerate the haproxy.pem file
# CreateErstellen aSie backupbei ofBedarf theein currentBackup haproxy.pem file if requiredder aktuellen haproxy.pem-Datei
cp /etc/haproxy/haproxy.pem /<backup-location>/haproxy.pem
# Erstellen Sie Builddie theZertifikatsdatei haproxy.pem Certificate file
cat end_entity_cetificate.crt intermediate_certificate.crt root_certificate.crt private_key.key > haproxy.pem
# copy theKopieren Sie die Datei haproxy.pem filean toden therichtigen correctOrt locationauf ondem the Load Balancer
cp <your-path-to-.pem>/haproxy.pem /etc/haproxy/haproxy.pem
# changedie the file access rightsDateizugriffsrechte ändern
cd /etc/haproxy/
chmod 400 haproxy.pem
# haproxy reload the haproxy
systemctl reload haproxy

Tests

After finishing, test access with your new https Testen Sie anschließend den Zugriff mit Ihrer neuen https-URL.

Example
Beispiel URL Admin

https://jtel.example.com/CarrierPortal/admin

Example URL
BeispielURL Client

https://jtel.example.com/CarrierPortal/login/<ResellerUID>/<ClientUID>

Further Information

Weitere Information

Weitere Informationen zu Sicherheit und Verschlüsselung finden Sie auf diesen SeitenFurther information regarding security and encryption can be found on these pages:

SSL/TLS Certificates - Self-signed certificate

SSL/TLS Certificates - Let's Encrypt Certificate

SSL/TLS Certificates - OCSP stapling

SSL/TLS Certificates - Connecting to the outside world

SSL/TLS Certificates - Configure haproxy for several subdomains

Useful

Nützliche openssl

commands

-Befehle

openssl kann zum Beispiel verwendet werden, um sicherzustellen, dass openssl can be used to for example ensure that the end_entity_cetificate.crt and und private_key.key match. It can also be used to ensure that the private key is not corrupted and to check the validity of the certificate itself.

Use the following commands if needed:

Checking the private key

übereinstimmen. Es kann auch verwendet werden, um sicherzustellen, dass der private Schlüssel nicht beschädigt ist, und um die Gültigkeit des Zertifikats selbst zu überprüfen.

Verwenden Sie bei Bedarf die folgenden Befehle:

Prüfen des privaten Schlüssels

Code Block
Stellen Sie sicher, dass der private Schlüssel nicht beschädigt ist. Wenn die Ausgabe "RSA key ok" erscheint, ist der private Schlüssel korrekt
Code Block
Make sure the private key is not corrupted. If the output “RSA key ok“ then the private key is correct.
openssl rsa -check -noout -in private_key.key
End entity and private key match

Endteilnehmer und privater Schlüssel stimmen überein

Code Block
# MakeStellen sureSie thesicher, enddass entitydas certificateEndteilnehmerzertifikat andund the privateder keyprivate matchSchlüssel togetherübereinstimmen. CalculateBerechnen theSie modulusden ofModulus thedes of the private keyprivaten Schlüssels
openssl rsa -modulus -noout -in private_key.key | openssl md5
# CalculateBerechnen theSie modulusden ofModulus the server certificatedes Server-Zertifikats
openssl x509 -modulus -noout -in end_entity_certificate.crt| openssl md5
# IfWenn bothbeide outputsAusgaben areidentisch identicalsind, thenstimmt theder private keySchlüssel matchesmit todem the end entity certificate.
Checking the certificate validity
Endteilnehmerzertifikat überein.

Überprüfung der Gültigkeit des Zertifikats

Code Block
openssl x509 -text -in haproxy.pem
Converting

Konvertierung von .pfx

Certificates to

-Zertifikaten in das .pem

format

-Format

Code Block
# TheDer followingfolgende commandBefehl cankann beverwendet usedwerden, toum converteine a .pfx-Zertifikatsdatei certificatein file todas .pem-Format zu Formatkonvertieren (thedas passwordPasswort forfür thedas certificateZertifikat willwird be requiredbenötigt):
openssl pkcs12 -in acd.cg.internal.pfx -out /root/haproxy.pem -nodes