...
Sada utilít d2u_* slúži na automatickú aktualizáciu inštalácie systému D2000 z FTP/SFTP servera. Poznámka: Popisovaný stav je platný od Podpora SFTP bola pridaná do verzie d2u_client 24.20.0.6 (D2000 v7.02.002 patche).37
Medzi utility d2u_* patria:
...
Utilita d2u_service beží ako servis pod užívateľom s právami na zápis do inštalačného a aplikačného adresára a umožňuje vykonať aktualizáciu, aj keď je za konzolou prihlásený užívateľ, ktorý tieto práva nemá. Utilitu musí na klientskom počítači zaregistrovať lokálny administrátor spustením "d2u_service -i" v adresári D2000_INSTALL_DIR\bin\.
Funkcionalita IPSAutoRun v d2u_service.exe
IPSAutorun umožňuje spustiť z definovaného adresára alebo prenosného USB média pripravený balíček, ktorý môže vykonať napr. aktualizáciu systému, nainštalovať patch, urobiť servisný zásah a pod. Balíček je digitálne podpísaný oprávneným subjektom a d2u_service spustí balíček iba po úspešnom overení podpisu.
IPSAutoRun balíček pozostáva z dvoch súborov:
- <<nazov>>.7z
- <<nazov>>.7z.sig
pričom "<<nazov>>.7z" je .7zip archív a "<<nazov>>.7z.sig" je súbor s digitálnym podpisom zaručujúcim autenticitu archívu. Archív musí obsahovať súbor "\autorun.cmd" a štandardne ďalšie súbory.
d2u_service.exe sleduje prítomnosť IPSAutoRun balíčkov:
- v definovanom adresári (WatchedDir),
- v koreňovom adresári pripojeného USB úložiska.
Konfigurácia IPSAutoRun
d2u_service.exe číta z registrov nasledovné parametre:
(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\PublicKey
- celá cesta k súboru s verejným kľúčom oprávneného subjektu (napr. "c:\D2000\D2000.EXE\utils\ipsautorun\public_key.pem"). Tento súbor musí byť chránený proti zmazaniu/zápisu prístupovými právami OS voči neautorizovaným užívateľom.
(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\UnpackDir
- cesta k pracovnému adresáru, do ktorého sa autorun balíčky rozbalia a odkiaľ budú spustené (napr. "c:\temp\ipsautorun\")
(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\WatchedDir
- cesta k pracovnému adresáru, ktorý bude monitorovaný na prítomnosť autorun balíčkov. Kvôli konzistencii balíčka a podpisu, je nutné najskôr do adresára kopírovať archív <meno>.7z a až potom podpis <meno>.7z.sig.
...
Oprávnený subjekt si vygeneruje súkromný + verejný kľúč napríklad pomocou aplikácie openssl.exe, ktorú si stiahne z bezpečného zdroja (alebo použije openssl.exe, ktoré je v adresári <D2000_inštalačný_adresár>/bin resp. /bin64).
Postup generovania páru kľúčov v príkazovom riadku windows cmd.exe:
set RANDFILE=.\.rnd openssl genrsa -out private_key.pem 4096 openssl rsa -pubout -in private_key.pem -out public_key.pem |
V aktuálnom adresári vzniknú súbory "private_key.pem" - súkromný kľúč a "public_key.pem" - verejný kľúč. Privátny kľúč je nutné zabezpečiť proti neoprávnenému prístupu, bude slúžiť na podpisovanie balíčkov. Verejný kľúč je nutné rozdistribuovať na počítače, kde bude bežať d2u_service.
Postup prípravy a podpisovania balíčkov
Do balíčka (do koreňového adresára) umiestnite dávkový súbor autorun.cmd, v ktorom je implementovaná potrebná funkcionalia a prípadne ďalšie potrebné súbory. Balíček zbaľte do formátu 7zip (www.7-zip.org). Potom balíček podpíšte súkromným kľúčom nasledovným postupom (opäť je potrebný openssl.exe):
...
Vznikne súbor .7z.sig, ktorý spolu so .7z tvorí balíček pripravnený na použitie pre d2u_service.
Kotva | ||||
---|---|---|---|---|
|
...
Utilita d2u_client po spustení vykoná aktualizáciu inštalačného a aplikačného adresára oproti FTP/SFTP serveru a spustí zadaný proces (typicky HI.EXE).
...
[HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\D2000V70<kľúč_inštalácie>\Update]
"Protocol"= 'disabled' alebo 'FTP' alebo 'SFTP' (disabled a SFTP od verzie d2u_client 4.0.0.43); ak nie je uvedený alebo nie je rozpoznaný, použije sa FTP, 'disabled' znamená že d2u_client nerobí žiadnu činnosť.
"FTPServer"=ip_adresa_(s)ftp_servera ; napríklad: "192.168.103.10" [1]
"FTPMode"=mód_ftp_spojenia ; prípustné módy sú: "active" a "passive", záleží od konfigurácie firewallu, nastavenie má význam len pre protokol FTP
"FTPApplDir"=aplikačný_adresár_na_(s)ftp_serveri ; napríklad "/pub/D2000.APP", [2]
"FTPInstallRoot"=inštalačný_adresár_na_(s)ftp_serveri ; napríklad "/pub/D2000.EXE", [3]
"FTPScriptsFile"=meno popisného súboru skriptov; napríklad "scripstfile.ini", [3]
"FTPUser"=ftp_login ; napríklad "d2update"
"FTPPassword"=ftp_password ; napríklad "w589pt7yegsf6hjxsecurePassword" [4]
"TrustedHostKeysSHA256"=čiarkami oddedené sha256 fingerprinty SFTP serverov v kódovaní base64, ktoré budú považované za dôveryhodné. Východzia hodnota je "*", čo znamená že akýkoľvek SFTP server je dôveryhodný. Na nedôveryhodný SFTP server sa d2u_client odmietne pripojiť.
D2Update je schopný pre "Update" použiť viac (S)FTP serverov. Ak sa použije viac (S)FTP serverov, ich adresy musia byť oddelené čiarkami. D2Update postupne skúša spojenie so všetkými zadanými servermi a aktualizáciu vykoná s prvým fungujúcim. Počet zadaných (S)FTP serverov nie je obmedzený.Kotva 1 1
Aplikačný adresár na (S)FTP serveri má nasledovnú štruktúru:Kotva 2 2
súbor /aplikačný_adresár_na_ftp_serveri/content.xml
Súbor content.xml musí byť vygenerovaný utilitou d2u_snapshot.exe (viď nižšie) po každej zmene obsahu aplikačných adresárov na (S)FTP serveri.
aplikačný adresár /aplikačný_adresár_na_ftp_serveri/aplikácia1/
aplikačný adresár /aplikačný_adresár_na_ftp_serveri/aplikácia2/
...
aplikačný adresár /aplikačný_adresár_na_ftp_serveri/aplikáciaN/
Inštalačný adresár na (S)FTP serveri má nasledovnú štruktúru:Kotva 3 3
súbor /inštalačný_adresár_na_ftp_serveri/update/content.xml
Súbor musí byť vygenerovaný utilitou d2u_snapshot.exe (viď nižšie) po každej zmene aplikačného adresára na (S)FTP serveri.
adresár /inštalačný_adresár_na_ftp_serveri/scripts/
Tu sú uloženémôžu byť uložené popisné súbory skriptov a skripty , ktoré budú spustené pred a po aktualizácii. Ak má dôjsť k spusteniu skriptov, musí špecifikované meno popisného súboru skriptov (viď parameter FTPScriptsFile, napr. scriptsfile.ini) v registroch alebo z príkazového riadka prepínačom /S (viď nižšie)
Formát skriptového súboru je nasledovný:Blok kódu title scriptsfile.ini [BEFORE] RUN_AS_CLIENT=before_cli.cmd RUN_AS_SERVICE=before_srv.cmd [AFTER] RUN_AS_CLIENT=after_cli.cmd RUN_AS_SERVICE=after_srv.cmd
sekcia [before] definuje skripty spustené pred zahájením samotného update, sekcia [after] defunuje skripty ktoré sa vykonajú po ukončení update. RUN_AS_SERVICE vykoná skript v kontexte systémovej služby d2u_service (typicky bežiacej pod kontom LOCAL_SYSTEM), RUN_AS_CLIENT vykoná skript v kontexte prihláseného užívateľa
adresár /inštalačný_adresár_na_ftp_serveri/update/
Tu sú adresáre inštalácie D2000, tj. bin/, java/, resdll/ atď.
Password je v nezakódovanom čitateľnom tvare.Kotva 4 4
Kotva | ||||
---|---|---|---|---|
|
/V | verbose |
/S=scriptsfile.ini | spustí skripty popísané v scripstfile.ini |
/Lsk | slovenský jazyk |
/Q | quiet |
/A | aktualizuje iba aplikačný adresár |
/T | test - nič fyzicky nezapisuje, iba simuluje aktualizáciu |
/F | fullcheck - ignoruje lokálny content.xml |
/Dtime | delay [time] sekúnd |
...
Utilita po spustení vytvorí v aktuálnom pracovnom adresári súbor content.xml, ktorý je umiestnený na (S)FTP serveri a d2u_client.exe podľa tohto súboru porovnáva, ktoré súbory treba stiahnuť z (S)FTP servera.
Typický postup je nakopírovať d2u_snapshot.exe do /aplikačný_adresár_na_ftp_serveri/ a do /inštalačný_adresár_na_ftp_serveri/update/.
Pri každej zmene v inštalačnom a aplikačnom adresári na (S)FTP serveri je potrebné zo servera spustiť obe utility, tie vygenerujú súbory /aplikačný_adresár_na_ftp_serveri/content.xml a /inštalačný_adresár_na_ftp_serveri/update/content.xml. Tieto súbory si potom pri aktualizácii klienta stiahne d2u_client.exe a podľa nich vykoná aktualizáciu.
Funkcionalita IPSAutoRun v d2u_service.exe
IPSAutorun umožňuje spustiť z definovaného adresára alebo prenosného USB média pripravený balíček, ktorý môže vykonať napr. aktualizáciu systému, nainštalovať patch, urobiť servisný zásah a pod. Balíček je digitálne podpísaný oprávneným subjektom a d2u_service spustí balíček iba po úspešnom overení podpisu.
IPSAutoRun balíček pozostáva z dvoch súborov:
- <<nazov>>.7z
- <<nazov>>.7z.sig
pričom "<<nazov>>.7z" je .7zip archív a "<<nazov>>.7z.sig" je súbor s digitálnym podpisom zaručujúcim autenticitu archívu. Archív musí obsahovať súbor "\autorun.cmd" a štandardne ďalšie súbory.
d2u_service.exe sleduje prítomnosť IPSAutoRun balíčkov:
- v definovanom adresári (WatchedDir),
- v koreňovom adresári pripojeného USB úložiska.
Konfigurácia IPSAutoRun
d2u_service.exe číta z registrov nasledovné parametre:
(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\PublicKey
- celá cesta k súboru s verejným kľúčom oprávneného subjektu (napr. "c:\D2000\D2000.EXE\utils\ipsautorun\public_key.pem"). Tento súbor musí byť chránený proti zmazaniu/zápisu prístupovými právami OS voči neautorizovaným užívateľom.
(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\UnpackDir
- cesta k pracovnému adresáru, do ktorého sa autorun balíčky rozbalia a odkiaľ budú spustené (napr. "c:\temp\ipsautorun\")
(string) HKEY_LOCAL_MACHINE\SOFTWARE\Ipesoft\<<base>>\IPSAutoRun\WatchedDir
- cesta k pracovnému adresáru, ktorý bude monitorovaný na prítomnosť autorun balíčkov. Kvôli konzistencii balíčka a podpisu, je nutné najskôr do adresára kopírovať archív <meno>.7z a až potom podpis <meno>.7z.sig.
Podpisovanie balíčkov
Oprávnený subjekt si vygeneruje súkromný + verejný kľúč napríklad pomocou aplikácie openssl.exe, ktorú si stiahne z bezpečného zdroja (alebo použije openssl.exe, ktoré je v adresári <D2000_inštalačný_adresár>/bin resp. /bin64).
Postup generovania páru kľúčov v príkazovom riadku windows cmd.exe:
set RANDFILE=.\.rnd openssl genrsa -out private_key.pem 4096 openssl rsa -pubout -in private_key.pem -out public_key.pem |
V aktuálnom adresári vzniknú súbory "private_key.pem" - súkromný kľúč a "public_key.pem" - verejný kľúč. Privátny kľúč je nutné zabezpečiť proti neoprávnenému prístupu, bude slúžiť na podpisovanie balíčkov. Verejný kľúč je nutné rozdistribuovať na počítače, kde bude bežať d2u_service.
Postup prípravy a podpisovania balíčkov
Do balíčka (do koreňového adresára) umiestnite dávkový súbor autorun.cmd, v ktorom je implementovaná potrebná funkcionalia a prípadne ďalšie potrebné súbory. Balíček zbaľte do formátu 7zip (www.7-zip.org). Potom balíček podpíšte súkromným kľúčom nasledovným postupom (opäť je potrebný openssl.exe):
openssl dgst -sha256 -sign private_key.pem -keyform PEM -out .7z.sig .7z |
Vznikne súbor .7z.sig, ktorý spolu so .7z tvorí balíček pripravnený na použitie pre d2u_service.
Info | ||
---|---|---|
| ||
...