Farbschema: Dunkel
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Bootstrapper » Navodila » Objava podpisane izdaje

Objava podpisane izdaje

Oddelek IT je zaganjalnik s projektno datoteko namestil enkrat. Odtlej založnik nove različice sproti shranjuje v skupno rabo, zaganjalnik pri vsakem uporabniku pa sme namestiti samo datoteke, ki jih je podpisal založnik.

Pregled rešitve

  • Wkl.Bootstrapper.exe /new-key <name> enkrat ustvari založnikov ključ za izdaje v shrambi ključev sistema Windows za založnikov uporabniški račun in izpiše njegov javni del.
  • Javni del vpišete v deliveryKey projektne datoteke, ki jo uvede oddelek IT.
  • tools\Export-ComRegistration.ps1 zapiše registration.json poleg vsakega strežnika COM v izdaji.
  • Wkl.Bootstrapper.exe /publish /key <name> po zadnji spremembi izdaje v vir zapiše datoteko delivery.json (vsako datoteko z velikostjo in vrednostjo SHA-256) in njen podpis delivery.json.sig.

Ključ za izdaje podpiše eno majhno datoteko na izdajo; ni certifikat podjetja za podpisovanje kode, pri katerem je število podpisov lahko omejeno. Programe in knjižnice, ki jih prinese izdaja, založnik kot doslej podpiše s certifikatom podjetja, kjer to zahteva nadzor aplikacij v sistemu Windows.

Izvedba

Enkrat, na založnikovem računalniku, v mapi zaganjalnika s projektno datoteko:

.\Wkl.Bootstrapper.exe /new-key Contoso
# prints the public key, for example MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...

Izpisano besedilo vstavite v projektno datoteko in datoteko predajte oddelku IT za začetno namestitev:

{ "format": 2, "product": "Blagajna", "deliveryKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...", "...": "..." }

Za vsako izdajo, ko so vse datoteke v viru:

# for each COM server of the delivery (once per bitness folder); DllInstall for servers registering per user
pwsh -File tools\Export-ComRegistration.ps1 -Dll \\server\share\blagajna\com\x86\Blagajna.Interop.dll
pwsh -File tools\Export-ComRegistration.ps1 -Dll \\server\share\blagajna\net\Blagajna.Bridge.dll -Kind NetCom
 
# last step: sign what is in the source now
.\Wkl.Bootstrapper.exe /publish /key Contoso
# Blagajna 3.2.1: 14 files in \\server\share\blagajna\delivery.json, signed.

/publish iz projektne datoteke poleg zaganjalnika (ali iz datoteke, ki jo navaja /RUNCFG <file>) prebere izdelek, vir in različico. Ključ, ki se ne ujema z deliveryKey, zavrne.

Vrnitev na prejšnjo različico

Zaganjalnik z deliveryKey nikoli ne namesti različice, nižje od najvišje, ki jo je uporabnik kdaj namestil (koda 52), zato zavrne starejšo podpisano izdajo, ki jo nekdo vrne v skupno rabo. Če se želite vrniti namenoma – različica 3.3.0 je napačna, uporabniki naj znova uporabljajo 3.2.1 –, v vir shranite 3.2.1 in navedite različico, ki jo umikate:

.\Wkl.Bootstrapper.exe /publish /key Contoso /withdraw 3.3.0
# Blagajna 3.2.1: 14 files in \\server\share\blagajna\delivery.json, signed, withdraws 3.3.0.

Več različic ločite z vejicami (/withdraw 3.3.0,3.3.1); navedite vsako različico nad izdano, ki jo je kateri od uporabnikov morda namestil. Vsaka mora biti višja od izdane različice. Seznam je zajet v podpisu, zato mu brez ključa za izdaje nihče ne more dodati različice. Uporabnika, ki je medtem namestil 3.4.0, ta izdaja ne vrne nazaj.

Opombe

  • /publish je zadnji korak: datoteka, spremenjena po njem, se ne namesti (koda 51), uporabniki pa obdržijo nameščeno različico, dokler izdaje ne objavite znova.
  • /publish odstrani stari podpis, preden zapiše nov manifest, zato zaganjalnik, ki bere vmes, najde nepodpisan manifest in obdrži nameščeno različico – nikoli stari podpis poleg novega manifesta.
  • Zasebni ključ nikoli ni shranjen v datoteki, vendar ga je mogoče izvoziti: vsak program, ki teče pod založnikovim uporabniškim računom sistema Windows, lahko z njim podpisuje in ga izvozi. Ta račun zato uporabljajte samo za objavljanje. Zaganjalnik nima ukaza za izvoz ali varnostno kopiranje; izguba ključa pomeni nov ključ in novo projektno datoteko, ki jo uvede oddelek IT.
  • Podpis zajema datoteke iz files. Programi iz actions tečejo neposredno iz vira in jih zaganjalnik glede na delivery.json ne preveri: kdor lahko piše v vir, jih lahko spremeni, tečejo pa s pravicami vsakega uporabnika, ki zažene aplikacijo.
  • Prej podpisana izdaja ostane veljavna, vendar se zaganjalniki od različice 2.2.4 z njo ne vrnejo nazaj: če nekdo v vir vrne starejšo podpisano izdajo, se na vsakem računalniku z višjo različico pojavi koda 52, ti uporabniki pa višjo različico obdržijo. Uporabnik, ki višje različice nikoli ni namestil (nov računalnik, nov uporabnik), starejšo izdajo namesti. Pravico pisanja v vir zato zaščitite.
  • Sidro zaupanja je mapa zaganjalnika s projektno datoteko: ključ za izdaje izdajo ščiti samo, dokler uporabniki ne morejo spremeniti datoteke bootstrapper.json, na primer ko oddelek IT zaganjalnik s paketom MSI namesti v Program Files. Zaganjalnik in projektno datoteko v skupni rabi ali v uporabnikovem profilu je mogoče spremeniti skupaj s ključem.
  • Export-ComRegistration.ps1 na založnikovem računalniku enkrat zažene strežnikovo registracijo, pri čemer vsako pisanje v register preusmeri v začasen ključ, ki ga nato izbriše; registracija samega računalnika se ne spremeni. Skript se po potrebi sam znova zažene v 32- ali 64-bitni lupini PowerShell, odvisno od strežnika. Zajame strežnike, ki se registrirajo z DllRegisterServer ali DllInstall (kot WKL Forms Object Library), in sestave .NET Framework. Nekatere komponente sistema Windows (na primer scrrun.dll, msxml6.dll) se registrirajo drugače in jih ni mogoče zajeti. Pri strežniku, ki piše prek HKEY_CLASSES_ROOT, kot je običajno pri ATL in Visual Basic 6, pred objavo preverite, ali zapisana tabela vsebuje njegove ključe CLSID.
  • Brez deliveryKey ukaz /publish brez /key še vedno zapiše delivery.json: zaganjalniki takrat preverijo velikosti in zgoščene vrednosti (celovitost), ne pa tudi založnika.

Sorodne teme

sl/wiki/msaccess/bootstrapper/how-to/publish-a-signed-delivery.txt · Zuletzt geändert: von Wolfgang van der Stille