Výpočetní služba přepočítává docházku. Pokud běží na jiném stroji než aplikační server, posílá si s ním data po síti – a tehdy je vhodné spojení zašifrovat pomocí HTTPS. Tento návod popisuje ruční nastavení pro verzi 5.3.
Tip pro správce: Instalátor HTTPS sám nenastavuje, ale ručně provedené nastavení při aktualizaci zachová.
Instalace | Jak služba poslouchá | HTTPS |
|---|---|---|
Služba na stejném stroji jako aplikační server (výchozí) |
| není potřeba |
Služba na jiném stroji (samostatná komponenta instalátoru) |
| doporučeno |
Aplikační server posílá službě s každým požadavkem sdílený klíč v hlavičce X-Calculation-Key. Bez HTTPS putuje klíč i obsah požadavků po síti nešifrovaně.
Ve verzi 5.3 volá výpočetní službu pouze aplikační server (serverové API eNextu chodí přes něj). Nastavení se proto mění jen na dvou místech: ve službě a v konfiguraci aplikačního serveru.
Co | Podrobnosti |
|---|---|
Instalace | Hotová instalace na dvou strojích: nejdřív aplikační server s adresou služby, potom služba na druhém stroji. Přepočty přes HTTP už fungují. |
Certifikát | Vystavený na plné jméno stroje se službou (FQDN), se soukromým klíčem, uložený v úložišti |
Port | Volný TCP port pro HTTPS, například |
Oprávnění | Správce na obou strojích. |
Odstávka | Restart obou služeb, řádově minuty. Automatické přepočty počkají ve frontě v databázi, ruční přepočet spuštěný během restartu skončí chybou. |
Stroj se službou: najděte jméno certifikátu.
Stroj se službou: vytvořte soubor appsettings.Production.json s nastavením HTTPS.
Stroj se službou: firewall – nic není potřeba, volitelně pravidlo zúžíte.
Stroj s aplikačním serverem: změňte adresu služby na https://….
Oba stroje: restartujte služby a ověřte spojení.
V PowerShellu vypište certifikáty v úložišti počítače. Budete potřebovat jméno z pole Subject:
Get-ChildItem Cert:\LocalMachine\My | Format-List Subject, NotAfter, Thumbprint, HasPrivateKeyZkontrolujte, že certifikát není prošlý (NotAfter) a má soukromý klíč (HasPrivateKey = True). Služba běží pod účtem LocalSystem, takže ke klíči v úložišti počítače má přístup bez dalšího nastavování.
Ve složce služby {instalace}\CalculationService vytvořte soubor appsettings.Production.json s tímto obsahem (jméno certifikátu a porty upravte podle sebe):
{
"Kestrel": {
"Endpoints": {
"Http": { "Url": "http://localhost:2223" },
"Https": {
"Url": "https://*:2224",
"Certificate": {
"Subject": "vypocet.firma.local",
"Store": "My",
"Location": "LocalMachine"
}
}
}
}
}Co jednotlivé části znamenají:
Http – přesune nešifrovaný přístup jen na tento stroj (localhost). Řádek nevynechávejte: bez něj by původní adresa http://*:<port> z instalace zůstala otevřená do sítě vedle HTTPS. Port ponechte stejný jako při instalaci.
Https.Url – hvězdička znamená všechna síťová rozhraní. Má-li stroj více síťových karet, je lepší uvést konkrétní IP adresu.
Certificate.Subject – jméno z certifikátu z kroku 1. Certifikát jde načíst i ze souboru (Path + Password), heslo by ale bylo čitelně v souboru – proto doporučujeme úložiště.
Ověřování volajícího se nemění – párování klíčem, které nastavil instalátor, zůstává.
Tip pro správce: Proč právě tento soubor? appsettings.json instalátor při každé instalaci skládá znovu. Soubor appsettings.Production.json nechává být a jeho hodnoty mají přednost – nastavení HTTPS tak přežije aktualizaci.
Nic nového nastavovat nemusíte. Instalátor samostatné službě přidal pravidlo AktionNEXT.CalculationService pro program služby, platí tedy pro všechny její porty. U vícenásobné instalace má pravidlo za názvem jméno instance v závorce.
Volitelně můžete pravidlo zúžit jen na adresu aplikačního serveru:
Set-NetFirewallRule -DisplayName 'AktionNEXT.CalculationService' -RemoteAddress 10.0.0.15V souboru {instalace}\AppServer\AppServer.exe.config změňte adresu služby na HTTPS:
<add key="DochazkaVypocetSluzbaUrl" value="https://vypocet.firma.local:2224" />Jméno v adrese musí odpovídat certifikátu. IP adresa projde jen tehdy, když ji certifikát obsahuje.
Klíče DochazkaVypocetSluzbaKlic a DochazkaVypocetVlastnik neměňte.
Adresu jde zadat i v průvodci instalátoru – pole s adresou služby na jiném počítači přijme i https://.
Verzi protokolu TLS určuje nastavení Windows. Na straně aplikačního serveru se nic dalšího nenastavuje.
Restart-Service 'AktionNEXT.CalculationService' # stroj se službou
Restart-Service 'AktionNext.AppServer' # stroj s aplikačním serveremU vícenásobné instalace mají obě služby v názvu příponu $INSTANCE.
Kontroly spouštějte ze stroje s aplikačním serverem – ověříte tím i cestu přes síť a důvěru v certifikát.
[Net.ServicePointManager]::SecurityProtocol = 'Tls12' # jen ve Windows PowerShell 5.1
# 1) dostupnost a platný certifikát: 200 + hlavička X-Calculation-Owner: Service
Invoke-WebRequest https://vypocet.firma.local:2224/health -UseBasicParsing |
Select-Object StatusCode, Headers
# 2) nešifrovaný port už ze sítě dostupný není: TcpTestSucceeded = False
Test-NetConnection vypocet.firma.local -Port 2223Spojení je v pořádku, když:
První dotaz vrátí 200 a hlavičku X-Calculation-Owner. Případná chyba certifikátu se projeví právě tady.
Druhý test skončí neúspěchem – port 2223 už poslouchá jen lokálně.
V logu aplikačního serveru ({instalace}\AppServer\AppServer.log) je po startu řádek „Vypocetni sluzba https://vypocet.firma.local:2224/ je pripravena.“ Tím je ověřené šifrované spojení i klíč.
V logu služby (CalculationService\logs\calculation-<datum>.log) je řádek „Autentizace: schéma ApiKey, povolení volající: …“ s volajícím AppServer (calc-admin).
Ruční přepočet jedné osoby z klienta proběhne bez chyby – projde celou cestou včetně ověření.
Kde | Co udělá instalátor | Důsledek |
|---|---|---|
| Složí ho znovu ( | Nevadí – |
| Nesahá na něj. | HTTPS zůstává. |
Adresa služby v konfiguraci aplikačního serveru | Předvyplní ji do průvodce a zapíše zpět; tichá instalace ji převezme. | Adresa |
Klíč | Na obou stranách ho zapíše znovu z databáze. | Beze změny. |
Pravidlo firewallu | Smaže ho a založí znovu. | Zúžení na adresu (krok 3) je potřeba zopakovat. |
Tip pro správce: Po každé aktualizaci zopakujte kontroly z kapitoly Ověření.
Příznak | Příčina | Řešení |
|---|---|---|
Služba po restartu neběží; v logu služby nebo v protokolu událostí Windows je chyba certifikátu. | Certifikát podle | Zopakujte krok 1 a opravte |
Chyba důvěry nebo neshoda jména certifikátu. | Adresa neodpovídá certifikátu, nebo stroj s aplikačním serverem nezná vydávající autoritu. | Použijte jméno z certifikátu; autoritu naimportujte do |
„Vypocetni sluzba … neodpovida“ | Špatný port v adrese, firewall, nebo služba neběží. |
|
401 / 403 a v logu aplikačního serveru rada o | Klíče na obou stranách se rozešly (ruční zásah do jedné z nich). | Srovnejte |
503 u ručního přepočtu | S HTTPS nesouvisí – služba výpočet nevlastní. | Srovnejte |
Po obnově certifikátu spojení přestane fungovat. | Certifikát se načítá při startu služby. | Restartujte službu; restart zařaďte do postupu obnovy certifikátů. |
Varování o nešifrovaném přístupu se u instalace z instalátoru nevypíše. Kontrola při startu služby adresu s hvězdičkou (http://*:<port>) nepozná. Na log se proto nespoléhejte – rozhoduje test portu z kapitoly Ověření.
Aplikační server nemusí certifikát ověřovat. Synchronizace kalendářů s Exchange nebo Kerio a DataPro vypínají kontrolu certifikátů pro celý aplikační server. Spojení je pak šifrované, protistrana ale ověřená není a chybný certifikát se neohlásí.
Ověřování účtem Windows (Negotiate) aktualizaci nepřežije. Instalátor aplikačního serveru se službou na jiném stroji zapíše klíč při každé instalaci a s vyplněným klíčem se server účtem nehlásí. Pro službu na jiném stroji proto používejte klíč + HTTPS.
Klíč je uložený čitelně – v konfiguraci obou stran i v databázi. Ruční zašifrování (dpapi:) instalátor při další instalaci přepíše. Počet pokusů o přihlášení klíčem služba neomezuje.
Od verze 5.4 bude službu volat přímo i serverové API eNextu. Pokud poběží na jiném stroji než služba, platí pro něj stejný požadavek na HTTPS a přibude mezi povolené volající v appsettings.Production.json.