Eines der neuen Features von NAV 2016 ist die verbesserte App für NAV, nun auch NAV Universal App 2.0 genannt. Sie ist für Android, iOS und Windows Phone erhältlich.
Die technische Herausforderung: Die NAV Universal App erzwingt eine Verbindung per SSL. Das wiederum bedingt
- die Erstellung und Installation eines SSL-Zertifikats auf dem NAV Server und
- die Installation des SSL-Zertifikats auf dem mobilen Gerät.
Unter Android ist die Installation von Zertifikaten etwas komplizierter, wie ich feststellen musste. Daher die Anleitung in zwei Teilen:
Im ersten Teil zeige ich, wie ich auf einer frischen Azure NAV 2016 Installation ein selbstsigniertes SSL-Zertifikat erstelle. Das Zertifikat wird dann auf dem mobilen Gerät installiert.
Im zweiten Teil geht es um die Installation und Einrichtung der App selber unter iOS und Android.
Update 28.01.2016:
Die hier beschriebene Variante, das Zertifikat mit openssl zu erzeugen und dann in IIS zu importieren, schlägt bei iOS fehl. Das Zertifikat wird zwar auch von iOS importiert, wird aber offensichtlich nicht verwendet. Hier eine neue Variante, die nun mit Android und iOS getestet wurde. Vielen Dank van Viktor Hartlieb, der mich auf das Problem hingewiesen und mir beim Test geholfen hat!
Einrichtung eines selbstsignierten SSL-CA-Zertifikats auf dem NAV-Server
Erstellung des Zertifikats auf dem NAV-Server
In diesem englischen MSDN-Blogbeitrag wird beschrieben, wie man ein SSL-Zertifikat erstellt und das auf Tablet/Smartphone installiert. Diese Variante hab ich selber getestet – es funktioniert.
https://blogs.msdn.microsoft.com/nav/2014/10/09/how-to-get-microsoft-dynamics-nav-for-tablets-to-connect-using-a-self-signed-certificate/
Hier meine eingedeutschte Version mit einigen Screenshots:
- Auf dem NAV-Server folgendes Powershell-Skript runterladen: https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6/file/101251/1/New-SelfSignedCertificateEx.zip und in einen Ordner entpacken (z.B. C:\temp\)
- Die Powershell als Administrator starten
- In das Verzeichnis gehen, wo die entpackte Datei New-SelfSignedCertificateEx.ps1 liegt (hier: C:\temp\):
C: cd temp
- Folgenden Befehl eingeben, um das Skript zu aktivieren:
Import-Module .\New-SelfSignedCertificateEx.ps1
- Dann folgenden Befehl eingeben, um das Zertifikat zu erstellen:
New-SelfSignedCertificateEx –Subject "CN=hostname" –IsCA $true –Exportable –StoreLocation LocalMachine –StoreName My
Statt hostname muss der volle Hostname des NAV-Servers eingetragen werden, also z.B. „CN=az-nav2016.cloudapp.net“.
- mmc.exe starten
- Unter Datei > Snap-In hinzufügen/entfernen auswählen:
- Dort das Snap-In Zertifikate auswählen und Hinzufügen klicken:
- Dann Computerkonto auswählen und Weiter klicken:
- Dann Lokalen Computer auswählen und Fertig Stellen klicken. Das neue Zertifikat findet sich nun unter Zertifikate > Eigene Zertifikate > Zertifikate.
- Das neue Zertifikat kopieren und unter Vertrauenswürdige Stammzertifizierungsstellen > Zertifikate einfügen:
- Das neue Zertifikat mit rechter Maustaste auswählen über Alle Aufgaben > Exportieren auswählen:
- Die Option Nein, privaten Schlüssel nicht exportieren auswählen und Weiter klicken:
- Das Format DER-codiert-binär X.509 (.CER) auswählen und Weiter klicken:
- Einen Dateinamen (mit der Endung .CER) angeben und Weiter und dann auf Fertig Stellen klicken:
Den exportieren Schlüssel man besten per Mail an das Android/iOS-Gerät schicken.
Installation des Zertifikats auf dem NAV-Server
Dazu ruft man den Internetinformationsdienst-Manager per „inetmgr“ auf, klickt links unter „Verbindungen“ auf den NAV-Server, dann unter IIS auf „Serverzertifikate“.
Hinweis: Unter Azure scheint schon standardmäßig ein Zertifikat ohne Anzeigenamen angelegt zu sein. Diese sollte gelöscht werden.
Dann rechts unter „Aktionen“ auf „Importieren“ klicken:
Dann die PFX-Datei auswählen und OK klicken:
Nun muss das importierte Zertifikat an den IIS „gebunden“ werden. Dazu im IIS-Manager unter Verbindungen den NAV-Server auswählen, unter „Sites“ > „Microsoft Dynamics NAV 2016 Web Client“ auswählen, dann rechts unter „Aktionen“ den Punkt „Bindungen“ auswählen:
Dort auf „Hinzufügen“ klicken und den https-Port 443 mit dem erstellten SSL-Zertifikat verbinden und OK klicken:
Nun kann man das Setup testen. Per https://[NAV-Server]/[Instanzname]/WebClient/phone.aspx kann man die Web-Variante der App testen. Die Warnmeldung kommt daher, dass das Zertifikat selbsterstellt und auf dem Client noch nicht installiert ist:
Falls es hier Probleme gibt, sollte geprüft werden, ob die Firewall für Port 443 offen ist. Auf Azure muss ggf. ein neuer Endpunkt für Port 443 geöffnet werden!
Installation des Zertifikats auf Android
Hinweis: Für die Installation eines Zertifikats unter Android ist mind. der Schutz per Muster oder PIN notwendig.
Die Installation kann über zwei Wege stattfinden.
Update 28.01.2016: Die Screenshots zeigen noch die PFX-Datei. Bitte hier gedanklich die CER-Datei vorstellen!
Man schickt sich die CER-Datei per Mail zu und öffnet die Datei direkt in Gmail:
Oder man kopiert die CER-Datei anderweitig auf das Android-Gerät und geht über Einstellungen > Sicherheit > Vom Speicher installieren und sucht dort die Datei.
Ob das Zertifikat korrekt installiert ist, kann man unter Einstellungen > Sicherheit > Vertrauensw. Anmeldedaten im Reiter „Nutzer“ sehen :
Ein erneuter Test mit dem WebClient zeigt, dass das Zertifikat nun installiert ist!
Installation des Zertifikats auf iOS
Hier ist die Methode per Mail beschrieben. Dabei schickt man das oben erstellte Zertifikat an das gewünschte Gerät und öffnet in der Mail das Zertifikat:
Dann auf Installieren klicken:
Es gibt eine Warnung, weil es sich um ein selbstsigniertes Zertifikat handelt:
Damit ist das Zertifikat installiert und einsatzbereit:
Im zweiten Teil kommen wir dann zur Installation und Einrichtung der App selbst.
Weitere Ressourcen
Mindestanforderungen für die NAV Universal App: http://totovic.com/2015/11/01/nav-2016-universal-app-system-requirements/
Installation eines selbstsignierten Zertifikats auf Windows Phone: http://totovic.com/2015/10/22/how-to-install-nav-2016-phone-client-as-test-environment/