Dynamics NAV / Business Central: automatisk förnyelse av SSL-certifikat
Microsoft Dynamics NAV och Business Central on-premise har två ställen där certifikatet ska bytas
samtidigt: IIS-bindningen för Web Client och ServicesCertificateThumbprint i varje BC
Service Tier-instans. simple-acme sköter IIS-delen och FairSSLs skript ImportDynamicsNAV.ps1
sköter konfigurationen av Service Tier.
Uppsättning
Steg 1: Installera simple-acme
Hämta FairSSL-utgåvan av simple-acme
(förkonfigurerad med ACME-adressen och förnyelseinställningarna, med
ImportDynamicsNAV.ps1 i mappen Scripts). Packa upp den till C:\simple-acme på
BC-servern.
Steg 2: Förbered miljön
- Värdnamnet är det som BC-klienterna använder, och det är inte ett wildcard.
- Domänen är konfigurerad för FairSSL AutoDNS.
- Planera ett servicefönster, eftersom skriptet startar om de BC-instanser där tumavtrycket ändras.
- Öppna en kommandotolk som administratör och gå till
C:\simple-acme. - Ta reda på vilket konto BC-tjänsten körs under. Det ska anges i kommandot i steg 3. Står det
NT AUTHORITY\NetworkServiceskriver duNETWORK SERVICE. Övriga fall beskrivs i frågan om--acl-fullcontrollängre ner.Get-CimInstance Win32_Service -Filter "Name LIKE 'MicrosoftDynamicsNavServer%'" | Select-Object Name,StartName
Steg 3: Utfärda och distribuera
Kör kommandot som administratör. simple-acme utfärdar certifikatet via AutoDNS, installerar det i Windows Certificate Store, ger BC-tjänstkontot full behörighet till den privata nyckeln, binder certifikatet till IIS och kör ImportDynamicsNAV-skriptet, som uppdaterar varje BC-instans som är igång.
Byt ut NETWORK SERVICE mot det konto som din BC-tjänst körs under.
Du tog reda på det i steg 2. Körs BC som NETWORK SERVICE låter du värdet stå kvar.
wacs.exe --verbose --baseuri "https://fairssl.dk/acme" `
--eab-key-identifier DIN_EAB_KID --eab-key DIN_EAB_HMAC --accepttos `
--source manual --host "bc.exempel.se" --validation none `
--certificatestore My --acl-fullcontrol "NETWORK SERVICE" `
--installation iis,script --script "Scripts\ImportDynamicsNAV.ps1" `
--scriptparameters "'{CertThumbprint}'" `
--friendlyname "fairssl-acme-bc.exempel.se" Steg 4: Verifiera IIS-bindningen
Öppna adressen till BC Web Client i en webbläsare och kontrollera att det nya certifikatet visas. Visas
fortfarande det gamla saknar IIS-bindningen en host-header som simple-acme kan matcha mot. Öppna IIS Manager,
gå till webbplatsen för BC Web Client → Bindings → HTTPS → Edit och välj det nya certifikatet
(friendly name fairssl-acme-<host>). Lägg samtidigt till en host-header på bindningen
(t.ex. *:443:bc.exempel.se), så binds certifikatet automatiskt vid kommande förnyelser.
Steg 5: Ställ in förnyelsefönstret i simple-acme
Använder du FairSSL-utgåvan av simple-acme är det redan inställt. Annars ändrar du
ScheduledTask → RenewalDays till 365 i settings.json i
mappen simple-acme. Då låter simple-acme ARI styra förnyelsen i stället för ett fast schema.
Avancerat: flera instanser med olika certifikat
Gäller bara om du har flera BC-instanser som använder olika certifikat. Kör kommandot från steg 3 en gång för varje par av certifikat och instans, och lägg till instansnamnet i skriptparametrarna:
--scriptparameters "'{CertThumbprint}' 'BC-PROD'" Vanliga frågor
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
MicrosoftDynamicsNavServer$* och skriver direkt i CustomSettings.config för varje instans, så varken NavAdminTool eller BCAdminTool behövs.ServicesCertificateThumbprint pekar på det nya certifikatet, och startar bara om de instanser där tumavtrycket ändrades. Övriga instanser fortsätter att köra. Skriptet sköter inte åtkomsten till den privata nyckeln. Den kommer från --acl-fullcontrol i wacs-kommandot, och simple-acme sätter den på nytt vid varje förnyelse.ServicesCertificateThumbprint ändrades. Har du flera BC-instanser som använder samma certifikat startas alla om, eftersom alla behöver det nya tumavtrycket. Använder instanserna olika certifikat, se avsnittet Avancerat längst ner.Get-CimInstance Win32_Service -Filter "Name LIKE 'MicrosoftDynamicsNavServer%'" | Select-Object Name,StartName på BC-servern och läs av StartName. Värdet kan inte alltid skrivas in som det står: simple-acme känner bara igen de två engelska namnen network service och administrators direkt, och slår upp allt annat i Windows under kontots lokaliserade namn. Står det NT AUTHORITY\NetworkService, skriv NETWORK SERVICE och inte det fullständiga namnet. På svenskt eller danskt Windows heter kontot NÄTVERKSTJÄNST, så det fullständiga engelska namnet går inte att slå upp. Står det LocalSystem, skriv S-1-5-18. Står det ett domänkonto eller ett gMSA, till exempel CONTOSO\svc_bc eller CONTOSO\svc_bc$, skriv det exakt som det står, eftersom domännamn inte översätts. Ett SID fungerar alltid, till exempel S-1-5-20 för NETWORK SERVICE. Flera konton skiljs åt med kommatecken. Utan den behörigheten startar instansen inte med det nya certifikatet.bc.example.com och nav.example.com.*:443: (utan host-header) visar webbläsaren fortfarande det gamla certifikatet efter första körningen. Öppna då IIS Manager, lägg till host-headern (t.ex. bc.example.com) och välj det nya certifikatet manuellt en gång. Därefter binds certifikatet automatiskt vid varje förnyelse.Redo att automatisera BC-certifikat?
Skapa ett gratis konto och beställ ditt första certifikat. Ett DV-certifikat utfärdas på under 2 minuter.