De webservices van Dynamics NAV kunnen werken op HTTP of HTTPS. Dat eerste is makkelijk, maar onveilig (zeker als de webservices van buiten het domein worden aangeroepen), de tweede optie is veiliger, maar is helaas wat lastiger te configureren.  Hoe het e.e.a. moet is goed beschreven op http://msdn.microsoft.com/en-us/library/ee414240.aspx. Het enige nadeel daarvan is dat het beschrijft hoe het met httpcfg werkt, terwijl netsh tegenwoordig de tool is om mee te werken. httpcfg werd nog wel meegeleverd met NAV2009, maar daarna moesten we zelf maar zien hoe het op te lossen (of mijn zoekskills zijn dermate slecht dat ik gewoon de nieuwe instructies niet kan vinden), maar gelukkig kun je httpcfg.exe dus gewoon kopieren van de NAV2009 DVD, en die gebruiken.

(netsh is tegenwoordig het commando wat je ervoor kunt gebruiken: zie ook deze link voor een voorbeeld)

Maar goed, dat was dus niet het probleem waar ik tegenaan liep vandaag. Een webservice werkt niet meer. Nu was het certificaat verlopen, en hadden ze (netjes) een nieuw certificaat aangevraagd, gekregen en opgeslagen in de local computer/personal store. Het enige waar ze niet aan gedacht hadden was om de thumbprint (die de webservice gebruikt om te kijken welk certificaat er gebruikt moet worden) aan te passen. Dus ik moet goede moed de thumbprint van het certificaat gehaald, in notepad gezet, spaties verwijderd, een cmd-prompt gestart (als administrator, uiteraard), en de volgende regel ingevoerd:

httpcfg set ssl -i <ip address>:<port> -h <thumbprint>

Het vraagteken voor de thumbprint ook maar even weggehaald (het eerste karakter in de thumbprint wordt niet getoond in notepad, maar is er wel degelijk, en moet worden verwijderd) en op enter gedrukt. Er kwam een melding dat het commando uitgevoerd was met de code 183 (of zo iets). Maar helaas, de webservice werkt nog steeds niet...

Op de eerder genoemde pagina staat letterlijk "If SSL is already configured on the address and port that you want to use, where 0.0.0.0 indicates all IP addresses, then delete it using the following command and substitute your IP and port number:". Dan moet je dat uiteraard ook wel doen.

Dus een httpcfg delete ssl –i 0.0.0.0:<port> gegeven en daarna het httpcfg set commando nogmaals gegeven. Nu volgde dezelfde melding (het commando is uitgevoerd) maar met code 0. Dat is fijn, want dat betekend dat er geen foutmelding is. En ja hoor, de webservice werkt.

Als je dus een nieuw certificaat wilt gebruiken (als vervanging van een oude), doe dan het volgende:

Kopieer httpcfg.exe van de NAV2009 DVD

Doe een httpcfg query ssl, en kijk welke ipadressen daar gebruikt worden.

Dan een httpcfg delete ssl -i <zojuist gevonden ipadres>:<port>

En als laatste httpcfg set ssl -i <ipadres>:<port> -h <thumbprint>