Bodo's Dynamics NAV Blog

Bodo ist ein Dynamics NAV Urgestein. Er programmiert NAV seit DOS Zeiten und hat auch keine Scheu vor .NET und schon gar nicht vor Dynamics 365 oder Azure. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu NAV Entwicklern ausgebildet.

In diesem Blog veröffentlichen Bodo und andere Superhelden Interessantes aus der Welt von Dynamics NAV, Dynamics 365 und Azure.

Dynamics NAV 2009 R2 Web Services – SSL Verschlüsselung

Verfasst von Mike am Freitag, 6. Juli 2012

Tags: webservices, ssl, r2, 2009, nav, tutorial

Heute schreibt mein lieber Kollege Mike: Wir gehen davon aus, dass ein bereits lauffähiger Web Service ohne Verschlüsselung zur Verfügung steht. Bei einer Standardinstallation zeigt der Aufruf http://localhost:7047/DynamicsNAV/WS/Services eine Liste der veröffentlichten Web Services auf der lokalen Maschine. Standardmäßig wird immer der „SystemService“ Web Service veröffentlicht:

Als ersten Schritt benötigen wir ein Computerzertifikat, das auf dem Server installiert wird. In diesem Tutorial werden wir ein selbstsigniertes Zertifikat benutzen, dass über eine Zertifizierungsstelle im Active Directory beantragt wird.

Zur Beantragung eines Computerzertifikats über eine Zertifizierungsstelle öffnen Sie eine Management Konsole über den Befehl »mmc«. Mit Hilfe des Shortcuts „Strg + M“ öffnen Sie das Auswahlfenster zum Hinzufügen des Snap-Ins „Zertifikate“. Wichtig ist, dass die Verwaltung eines Computerkontos in diesem Kontext ausgewählt werden muss. In unserem Fall handelt es sich um das lokale Computerkonto. Nach Bestätigung der Auswahl kehren wir zur Management Konsole zurück und navigieren über „Zertifikate -> Eigene Zertifikate -> Alle Aufgaben“ zum Punkt „Neues Zertifikat anfordern…“

Mit Hilfe des Assistenten zur Zertifikatregistrierung wird ein Computerzertifikat angefordert, dass nach Abschluss des Assistenten im Zertifikatspeicher „Eigene Zertifikate“ installiert wird. Für die spätere Nutzung des Zertifikats benötigen wir dessen Feldwert „Fingerabdruck“. Diesen erhalten wir, indem wir das gerade installierte Zertifikat per Doppelklick öffnen und im Reiter „Details“ zum Feld „Fingerabdruck“ navigieren.

Den Wert kopieren wir uns in eine Textdatei, entfernen alle Leerzeichen und speichern diese ab.

Nun konfigurieren wir den Web Service um, so dass eine verschlüsselte Übertragung genutzt wird. Die für die Konfiguration der Serviceschicht zugrundeliegende Datei heißt im Standard „CustomSettings.config“ und befindet sich im Ordner „C:\Program Files (x86)\Microsoft Dynamics NAV\60\Service“. Der relevante Schlüssel heißt „WebServiceSSLEnabled“ und muss auf den Wert „true“ konfiguriert werden. Die Datei kann danach gespeichert und geschlossen werden.

Als nächsten Schritt müssen wir die ACL (Access Control List) bearbeiten, so dass der Zugriff auf unsere Web Service Ressource gestattet wird. Dafür starten wir eine Eingabeaufforderung als Administrator. Als erstes überprüfen wir mit dem Befehl »netsh http show urlacl« die bestehenden Einträge.

Es müssen alle Einträge entfernt werden, die denselben Port nutzen wie unser Web Service. In unserem Fall muss der Eintrag für die URL http://+:7047/DynamicsNAV/ entfernt werden.

Mit dem Befehl »netsh http delete urlacl url=http://+:7047/DynamicsNAV/« wird dieser Eintrag entfernt.

Der Befehl «netsh http add urlacl url=https://+:7047/DynamicsNAV user="comporsys\sersqlnav"» registriert die URL unseres verschlüsselten Web Services. In unserem Fall wird der Web Service unter dem Konto „sersqlnav“ in der Domäne „comporsys“ ausgeführt. Sollte der Dienst bei Ihnen unter dem Konto der Netzwerkdienstes ausgeführt werden, wäre der richtige Eintrag stattdessen user="NT AUTHORITY\NETWORK SERVICE".

Als nächsten Schritt muss die Bindung des Zertifikats zum Web Service Port konfiguriert werden. Dazu listen wir uns die vorhandenen Zertifikatbindungen mit dem Befehl «netsh http show sslcert» auf. In unserem Fall bestehen noch keine Zertifikatbindungen.

Mit dem Befehl »netsh http add sslcert ipport=0.0.0.0:7047 certhash=776a54f5f78ed5465652ca5197afef33f11e543b appid={00000000-0000-6002-0022-0000836BD2D2}« binden wir unser Zertifikat über den Wert seines Fingerabdrucks (certhash), den wir vorhin in einer Textdatei gespeichert haben, auf alle IP Adressen und den Port 7047 des Web Services.

Der Wert des Parameters „appid“ entspricht der GUID (Globally Unique Identifier) der Applikation. In unserem Fall heißt die Applikation „Microsoft Dynamics NAV 2009 Service“ mit der GUID „00000000-0000-6002-0022-0000836BD2D2“. Zu finden ist die GUID über den Registrierungseditor von Windows über eine Suche des Namens „Microsoft Dynamics NAV 2009 Service“ im Schlüssel „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData“.

Nun ist der Web Service fertig konfiguriert. Die beiden Dienste der Serviceschicht müssen Sie jetzt beenden und neu starten. Es ist wichtig, dass Sie die beiden Dienste beenden und danach jeweils neu starten. Der Hintergrund dafür ist, dass die Konfiguration der Serviceschicht erst dann neu geladen wird wenn sie sich nicht mehr im Speicher befindet. Im Windows Application Event Log wird daraufhin der erfolgreiche Start protokolliert.

Der Aufruf im Internet Explorer der URL https://localhost:7047/DynamicsNAV/WS/Services zeigt nun die Liste der veröffentlichten Web Services auf der lokalen Maschine.

 


Kontakt

Comporsys Hansa GmbH
Spitzerdorfstr. 3
22880 Wedel, Deutschland

Tel. +49 (0)4103 12117 - 0
Fax +49 (0)4103 12117 - 29
E-Mail: info@comporsys.de