Infoclientverbindung via mTLS

<< Klicken um Inhaltsverzeichnis aufzurufen >>

Navigation:  Client Anwendungen > Der Cordaware Infoclient > Konfiguration >

Infoclientverbindung via mTLS

1. Zertifikate ausstellen und vertrauen

Als Erstes müssen Sie die Zertifikate ausstellen. Hierbei ist es wichtig, das Server- und Clientzertifikat von derselben CA (Certification Authority) ausgestellt wurden. Der Server und jeder Client muss dem Stammzertifikat vertrauen und jeder Client muss zusätzlich seinem Clientzertifikat vertrauen.

Hierfür müssen diese jeweils in der MMC (Microsoft Management Console) importiert werden. Öffnen Sie die MMC und gehen in den Pfad (Zertifikate (Lokaler Computer) > Eigene Zertifikate), klicken Sie mit einem Rechtsklick auf "Eigene Zertifikate", dann auf "Alle Aufgaben" und danach auf "Importieren". Sie können die Zertifikate ebenfalls mit einer Softwareverteilung verteilen.

 

Zertifikatsspeicher ändern (optional)

Falls Sie den Zertifikatsspeicher unter dem Cordaware bestinformed nach dem Zertifikat sucht, ändern wollen, gehen Sie wie folgt vor:

 

Öffnen Sie die Konfigurations App in Ihrer Cordaware bestinformed Weboberfläche und erstellen Sie eine neue Konfiguration.

Stellen Sie den Typ auf Benutzerdefiniert und setzen Sie unter „Erweiterte Zeit-Einstellungen“ den Haken bei „Offenes Ende“.

Setzen Sie nun den Haken bei „Benutzerdefinierte Sektionen“ und tragen Folgendes ein:

 


[General]

ClientCertificateStorageAccessTypes=NAME

 

Die Variable NAME wird hierbei durch den Namen ersetzt.

 

Die Standardeinstellung ist:

 


[General]

ClientCertificateStorageAccessTypes=CurrentUser

 

Wenn dem Client-Zertifikat ein benutzerdefinierter CN gegeben wurde, dann muss dieser explizit angegeben werden. Fügen Sie zusätzlich Folgendes in Ihre Konfiguration ein:

 


[General]

ClientCertificate=CUSTOM_CERTIFICATE_CN

 

Die Variable CUSTOM_CERTIFICATE_CN wird hierbei durch den Common Name ersetzt.

 

Wenn Sie diese Zeile nicht einfügen, dann sind die Client-Zertifikats-Namen dynamisch auf jeden Benutzer automatisch zugeschnitten.

 

Lassen Sie die Empfänger leer, um die Konfiguration an alle Clients zu versenden.

 

 

Einstellung

Erlaubte Werte / Standardwert

Funktion

ClientCertificateStorageAccessTypes

CurrentService, CurrentUser, CurrentUserGroupPolicy, LocalMachine, LocalMachineEnterprise, LocalMachineGroupPolicy, Services, Users (Default=CurrentUser)

Definiert den Zertifikatsspeicher, auf dem Cordaware bestinformed zugreift.

ClientCertificateSystemStores

MY, CA, ROOT, SYSTEM (Default=MY)

Definiert den Speicherort des Systems, in dem die Zertifikate abgelegt sind.

ClientCertificate

username.hostname, computername.domainname, commonname, hostname, CUSTOM_CERTIFICATE_CN

(Default=username.hostname)

Wenn dem Client-Zertifikat ein benutzerdefinierter CN gegeben wurde, dann muss dieser hier explizit angegeben werden. Ohne diesen Eintrag sind die Client-Zertifikats-Namen dynamisch auf jeden Benutzer automatisch zugeschnitten.

 

Standardmäßig wird diese Einstellung auf username.hostname gesetzt.

 


Beispiel:

 

Wenn der Windows-Loginname z.B. max.mustermann und der Hostname des Servers cordaware.firma.local ist, dann wird der Infoclient ein Client-Zertifikat erwarten, welches als CN max.mustermann.cordaware.firma.local hat.

 

 

 

2. Zertifikate in Cordaware bestinformed einspielen

 

Öffnen Sie den Pfad „/Cordaware/best_srv/etc/certs“. Kopieren Sie nun Ihre Zertifikate in diesen Ordner.

 

Öffnen Sie danach die Datei „app.config“ im Pfad „/Cordaware/best_srv/data/configs“.

Suchen Sie in dem Dokument nach „8431“ und tauschen Sie darunter die Namen folgender Zertifikate aus:

 


{keyfile,"etc/certs/best_key.pem"}, -> {keyfile,"etc/certs/SERVER_KEY_NAME"},

 


{certfile,"etc/certs/best_cert.pem"}, -> {certfile,"etc/certs/SERVER_CERTIFICATE_NAME"},

 

Fügen Sie danach folgende Zeile ein:

 


{cacertfile,"etc/certs/CA_CERTIFICATE_NAME"},

 

Die Variablen SERVER_KEY_NAME, SERVER_CERTIFICATE_NAME und CA_CERTIFICATE_NAME werden durch den jeweiligen Dateinamen ersetzt.

 

Löschen Sie danach noch die Zeile mit dem Inhalt „{handshake, hello}“ und in der Zeile darüber das „,“, um PSK zu deaktivieren.

 

Vorher

Nachher

{listeners, [

 {'buri:ssl', {"0.0.0.0",8431}, [

   {acceptors,   100},

   {max_connections, 500000},

   {access,[{allow,all}]},

   {active_n,100},

   %{proxy_header,true}, if behind load balancer

   %% SSL certificate and key files

   {ssl_options,

     [{ciphers, [

       "ECDHE-ECDSA-AES256-GCM-SHA384",

       "ECDHE-RSA-AES256-GCM-SHA384",

       "ECDHE-ECDSA-AES128-GCM-SHA256",

       "ECDHE-RSA-AES128-GCM-SHA256"]},

       {keyfile,"etc/certs/best_key.pem"},

       {certfile,"etc/certs/best_cert.pem"},

       {fail_if_no_peer_cert,false},

       {versions,['tlsv1.2']}, % 1.2 only, later if release 1.3 only

       {honor_cipher_order, true}, % only our cipher

       {honor_ecc_order, true}, % only our ecc

       {verify, verify_none},

       {reuse_sessions,true},

       {handshake, hello}

     ]},

   %% Socket Options

   {tcp_options,[{backlog,1024},{nodelay,true}]}

 ]}

]}]},

{listeners, [

 {'buri:ssl', {"0.0.0.0",8431}, [

   {acceptors,   100},

   {max_connections, 500000},

   {access,[{allow,all}]},

   {active_n,100},

   %{proxy_header,true}, if behind load balancer

   %% SSL certificate and key files

   {ssl_options,

     [{ciphers, [

       "ECDHE-ECDSA-AES256-GCM-SHA384",

       "ECDHE-RSA-AES256-GCM-SHA384",

       "ECDHE-ECDSA-AES128-GCM-SHA256",

       "ECDHE-RSA-AES128-GCM-SHA256"]},

       {keyfile,"etc/certs/SERVER_KEY_NAME"},

       {certfile,"etc/certs/SERVER_CERTIFICATE_NAME"},

       {cacertfile,"etc/certs/<CA_CERTIFICATE_NAME>"},

       {fail_if_no_peer_cert,false},

       {versions,['tlsv1.2']}, % 1.2 only, later if release 1.3 only

       {honor_cipher_order, true}, % only our cipher

       {honor_ecc_order, true}, % only our ecc

       {verify, verify_none},

       {reuse_sessions,true}

     ]},

   %% Socket Options

   {tcp_options,[{backlog,1024},{nodelay,true}]}

 ]}

]}]},

 

3. Nur Verbindungen mit Client-Zertifikaten erlauben

 

Ändern Sie in den Zeilen darunter folgende Werte:

 


{fail_if_no_peer_cert, false}, -> {fail_if_no_peer_cert, true},

 


{verify, verfiy_none}, -> {verify, verify_peer},

 

Vorher

Nachher

{listeners, [

 {'buri:ssl', {"0.0.0.0",8431}, [

   {acceptors,   100},

   {max_connections, 500000},

   {access,[{allow,all}]},

   {active_n,100},

   %{proxy_header,true}, if behind load balancer

   %% SSL certificate and key files

   {ssl_options,

     [{ciphers, [

       "ECDHE-ECDSA-AES256-GCM-SHA384",

       "ECDHE-RSA-AES256-GCM-SHA384",

       "ECDHE-ECDSA-AES128-GCM-SHA256",

       "ECDHE-RSA-AES128-GCM-SHA256"]},

       {keyfile,“etc/certs/<SERVER_KEY_NAME>“},

       {certfile,“etc/certs/<SERVER_CERTIFICATE_NAME>“},

       {cacertfile,“etc/certs/<CA_CERTIFICATE_NAME>“},

       {fail_if_no_peer_cert,false},

       {versions,['tlsv1.2']}, % 1.2 only, later if release 1.3 only

       {honor_cipher_order, true}, % only our cipher

       {honor_ecc_order, true}, % only our ecc

       {verify, verify_none},

       {reuse_sessions,true}

     ]},

   %% Socket Options

   {tcp_options,[{backlog,1024},{nodelay,true}]}

 ]}

]}]},

{listeners, [

 {'buri:ssl', {"0.0.0.0",8431}, [

   {acceptors,   100},

   {max_connections, 500000},

   {access,[{allow,all}]},

   {active_n,100},

   %{proxy_header,true}, if behind load balancer

   %% SSL certificate and key files

   {ssl_options,

     [{ciphers, [

       "ECDHE-ECDSA-AES256-GCM-SHA384",

       "ECDHE-RSA-AES256-GCM-SHA384",

       "ECDHE-ECDSA-AES128-GCM-SHA256",

       "ECDHE-RSA-AES128-GCM-SHA256"]},

       {keyfile,"etc/certs/<SERVER_KEY_NAME>"},

       {certfile,"etc/certs/<SERVER_CERTIFICATE_NAME>"},

       {cacertfile,"etc/certs/<CA_CERTIFICATE_NAME>"},

       {fail_if_no_peer_cert,true},

       {versions,['tlsv1.2']}, % 1.2 only, later if release 1.3 only

       {honor_cipher_order, true}, % only our cipher

       {honor_ecc_order, true}, % only our ecc

       {verify, verify_peer},

       {reuse_sessions,true}

     ]},

   %% Socket Options

   {tcp_options,[{backlog,1024},{nodelay,true}]}

 ]}

]}]},

 

Speichern Sie nun die Datei und starten danach den Dienst „Cordaware_bestinformed_best_srv“ neu.

 

Wenn Sie ClientCertificateStorageAccessTypes verwenden, müssen die Clientzertifikate in den Pfad (Zertifikate (Lokaler Benutzer) > Eigene Zertifikate) importiert werden.