Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A winapp CLI megkönnyíti a helyi Windows fejlesztését: létrehozhat aláíró tanúsítványt, megbízhat benne a gépen, és bekapcsolhatja a fejlesztői módot. Mindegyik lépés megváltoztatja a gép állapotát, vagy létrehoz egy titkos kulcsot tartalmazó fájlt, így segít pontosan tudni, hogy mit csinálnak.
Ez az oldal bemutatja az egyes parancsok következményeit, a visszavonás módját, valamint azt, hogy mi a teendő másként a szállításkor. A fejlesztési tanúsítványok és a fejlesztői mód a helyi tesztelés normál, támogatott útvonala – a cél itt az, hogy megértse, mit választ, és ne kerülje el őket.
Fejlesztési tanúsítványok
Az MSIX-csomagokat alá kell írni, mielőtt Windows telepíti őket. A helyi teszteléshez létrehoz egy önaláírt tanúsítványt, amely lehetővé teszi a saját csomag aláírását és telepítését anélkül, winapp cert generate hogy bármit vásárolna.
Amit winapp cert generate létrehoz
A létrehozott tanúsítvány egy önaláírt, végfelhasználói kódaláíró tanúsítvány:
| Property | Érték |
|---|---|
| Key | 2048 bites RSA, exportálhatónak jelölt |
| Aláírási algoritmus | SHA-256 RSA-val (PKCS#1 v1.5) |
| Kulcshasználat | Digitális aláírás |
| Továbbfejlesztett kulcshasználat | Kódaláírás (1.3.6.1.5.5.7.3.3) |
| Alapvető korlátozások | Nem hitelesítésszolgáltató |
| Érvényesség | Alapértelmezés szerint 365 nap (--valid-days) |
| Subject | Meg kell egyeznie a manifestfájlban szereplő Publisher elemmel |
A parancs két dolgot ír:
-
devcert.pfxaz aktuális könyvtárban (vagy a(z)--outputszámára megadott elérési úton). Ez a fájl tartalmazza mind a tanúsítványt, mind a privát kulcsát. - A tanúsítvány másolata a személyes tanúsítványtárolóban (
Cert:\CurrentUser\My).
A(z) --export-cer használatakor a(z) .pfx mellé egy .cer fájlt is létrehoz. Ez a fájl csak a nyilvános tanúsítványt tartalmazza — privát kulcsot nem —, ezért ezt nyugodtan átadhatod egy csapattársnak vagy egy tesztgépnek, amelynek meg kell bíznia a buildjeidben.
Note
Az önaláírt tanúsítványokat senki sem megbízhatónak minősíti, amíg valaki nem bízik benne kifejezetten. Ez megfelelő a saját gépén és a saját tesztgépein; nem helyettesíti a valódi kódaláírási identitást, amikor terjeszti az alkalmazását.
Az alapértelmezett jelszó
winapp cert generate a(z) password értéket használja PFX-jelszóként, kivéve, ha megadja a(z) --password paramétert. Ugyanez az alapértelmezett érték érvényes akkor is, amikor később megadja ezt a tanúsítványt a(z) winapp sign számára, amelynek jelszóbeállítása szintén --password, valamint a(z) winapp pack számára, amely a(z) --cert-password paramétert fogadja.
A jól ismert jelszó azt jelenti, hogy a titkos kulcs devcert.pfx hatékonyan védtelen – bárki, aki beszerezi a fájlt, aláírhatja vele a kódot. Ez elfogadható kompromisszum egy olyan eldobható tanúsítvány esetében, amelyet kizárólag a saját gépén készített helyi tesztbuild-ek aláírására használnak, és ezért létezik ez az alapértelmezett beállítás.
Important
Az alapértelmezett jelszót úgy kezelje, mint egy jelet, amely jelzi, hogy a tanúsítvány eldobható. Ha egy tanúsítványt arra használnak, hogy aláírjanak vele valamit, amit egy másik személy fog telepíteni, akkor az nem lehet egy alapértelmezett jelszóval ellátott winapp cert generate tanúsítvány – lásd a Aláírás éles környezetben című részt.
A szkripteknek és az ügynököknek nem kell saját maguknak összehasonlítaniuk a jelszót: winapp cert generate --json jelenti "defaultPasswordIsPublic": true , és megismétli a közzétételt egy warnings tömbben, amikor az alapértelmezés van érvényben. Lásd a tanúsítvány JSON-kimenetének generálása című témakört.
A tanúsítványfájl helye
devcert.pfx egy privát kulcs a lemezen. Két szabály tartja távol a bajtól:
Ne véglegesítse.winapp cert generate automatikusan hozzáfűzi a tanúsítvány fájlnevét a .gitignore mellette lévő fájlhoz, így az alapértelmezett folyamat már le van fedve. Ha áthelyezi a fájlt, átnevezi, vagy egy másik .gitignore által felügyelt könyvtárba generálja, ellenőrizze, hogy a bejegyzés is követte-e:
git check-ignore -v devcert.pfx
Ha ez nem ír ki semmit, a fájl nincs ignorálva — add hozzá a commit előtt.
Ne csomagolja be.winapp pack a bemeneti könyvtárban található összes fájlt becsomagolja, így az alkalmazás kimeneti mappájában található devcert.pfx is belekerül a leszállított MSIX-csomagba. A tanúsítványt azon a mappán kívül hozza létre, amelyet becsomagol, ahogy azt a EXE/CLI csomagolási útmutató is mutatja, és terjesztés előtt győződjön meg arról, hogy nincs ott:
# Unpack the package and check that no certificate is inside
winapp tool makeappx unpack /p .\MyApp.msix /d .\inspect /o
Get-ChildItem .\inspect -Recurse -Include *.pfx, *.cer
Tip
Ha egy valódi privát kulccsal rendelkező .pfx valaha commitba kerül vagy közzéteszik, cserélje le: hozzon létre egy új tanúsítványt, írja alá ismét, és a régi megbízhatóságát szüntesse meg a Megbízható tanúsítvány eltávolítása című részben leírt lépések szerint. A fájl későbbi véglegesítésből való törlése nem távolítja el az előzményekből.
Milyen winapp cert install támogatások
winapp cert install hozzáadja a tanúsítványt az LocalMachine\TrustedPeople áruházhoz. Ehhez rendszergazdai jogosultságokra van szükség, mert ez megváltoztatja a gép minden felhasználójának megbízhatóságát.
Ha egy tanúsítvány be van advaTrustedPeople, Windows a tanúsítvány által aláírt MSIX-csomagokat a telepítéshez elég megbízhatóként fogadja el – nem csak a tesztelt csomagot. Olyan tanúsítvány esetében, amelynek a titkos kulcsát helyben tartja és tartja, pontosan ez a kívánt hatás. Ez az oka annak is, hogy tudatosnak kell lennünk ezzel kapcsolatban:
- Megbízhatósági tanúsítványok, amelyeket ön hozott létre, vagy amelyek olyan személytől származnak, aki lehetővé tenné a szoftver telepítését a gépen.
- Ne telepítsen fejlesztési tanúsítványt olyan megosztott, éles vagy buildelési gépekre, amelyekre mások támaszkodnak.
- Inkább a
.cer(csak nyilvános kulcs) terjesztését részesítse előnyben, mint azt,.pfxamikor egy munkatársnak telepítenie kell a tesztcsomagot. Képessé válnak arra, hogy megbízzanak az Ön buildjeiben, anélkül hogy megszereznék a képességet arra, hogy az Ön nevében írjanak alá.
Ha egy másik tesztgépen szeretne megbízni egy .cer-ban/-ben, közvetlenül azon futtassa a winapp cert install parancsot — a parancs vagy egy .cer-t, vagy egy csak nyilvános .pfx-t fogad el:
# Run as Administrator
winapp cert install .\devcert.cer
Ennek megfelelője csak a beépített Windows eszköz használata esetén a következő:
# Run as Administrator
Import-Certificate -FilePath .\devcert.cer -CertStoreLocation Cert:\LocalMachine\TrustedPeople
Megbízható tanúsítvány eltávolítása
A fejlesztési tanúsítványok alapértelmezés szerint egy év után lejárnak, de a lejárat nem egyenlő az eltávolítással. Ha már nincs szükség egy tanúsítványra — mert a projekt befejeződött, a gépet más célra használják, vagy a kulcs kiszivároghatott — kifejezetten távolítsa el.
Először keresse meg az ujjlenyomatát:
Get-ChildItem Cert:\LocalMachine\TrustedPeople |
Where-Object { $_.Subject -like '*CN=Contoso*' } |
Format-List Subject, Thumbprint, NotAfter
Ezután távolítsa el a gép megbízhatósági tárolójából. Ehhez a lépéshez emelt szintű jogosultság szükséges:
# Run as Administrator. Replace with the thumbprint from the previous command.
$thumbprint = 'ABCD...'
Remove-Item -Path "Cert:\LocalMachine\TrustedPeople\$thumbprint"
cert generate a tanúsítványt a titkos kulcsával együtt a személyes tárolóban is elhelyezte. Távolítsa el ezt egy normál, nem emelt jogosultságú parancssorból, azzal a fiókkal bejelentkezve, amely futtatta a cert generate:
$thumbprint = 'ABCD...'
Remove-Item -Path "Cert:\CurrentUser\My\$thumbprint"
Important
Futtassa a fenti két parancsot a megjelenített környezetekben. Ha egy másik rendszergazdai fiókkal hajtotta végre a jogosultságemelést, Cert:\CurrentUser ebben az emelt jogosultságú munkamenetben annak a rendszergazdának a tárolója — nem az Öné —, így a titkos kulcs a létrehozó felhasználó tárolójában maradna ott.
Végül törölje a .pfx elemet és a kiosztott .cer példányokat, majd szüntesse meg a vele oldalról betöltött csomagok regisztrációját:
winapp unregister
Note
A tanúsítvány eltávolítása nem távolítja el a már telepített csomagokat. Távolítsa el ezeket külön a Beállítások > Alkalmazások > Telepített alkalmazások útvonalon, illetve a fejlesztői módban regisztrált csomagok esetében a winapp unregister használatával.
Fejlesztői mód
Windows megköveteli, hogy a fejlesztői mód közvetlenül egy lemezen lévő mappából – laza elrendezésből – regisztráljon egy alkalmazáscsomagot ahelyett, hogy beépített, aláírt MSIX-t telepítene. Az olyan parancsok, mint a winapp run és a create-debug-identity, erre támaszkodnak, és nélküle nem működnek, a winapp init pedig felajánlja, hogy bekapcsolja Önnek.
Mit változtat a bekapcsolása
A CLI a fejlesztői módot úgy engedélyezi, hogy két HKEY_LOCAL_MACHINE értéket ír be a DWORD alá:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock
AllowDevelopmentWithoutDevLicense = 1
AllowAllTrustedApps = 1
Mivel ezek gépi szintű beállítások, a parancssori felület emelt szintű segédfolyamatot indít el, és Windows megjelenik egy felhasználói fiókvezérlési kérés. Semmi sem változik, ha elutasítja a kérést.
Gyakorlatilag ez azt jelenti, hogy a gép:
- Alkalmazáscsomagok regisztrálása közvetlenül a lemezen lévő mappából anélkül, hogy azokat beépítették egy MSIX-be, vagy egyáltalán alá se írták (
AllowDevelopmentWithoutDevLicense). - Telepítse a Microsoft Store-on kívülről származó alkalmazáscsomagokat, amennyiben azokat a gép által megbízhatónak tekintett tanúsítvány írja alá – beleértve a(z)
AllowAllTrustedApps(TrustedPeople) fejlesztési tanúsítványokat is.
Important
A fejlesztői mód és a megbízható fejlesztői tanúsítvány az alapértelmezett telepítési korlátozások szándékos lazítása. Ez a kombináció fejlesztői és tesztgépekre való. Hagyja kikapcsolva éles gépeken, kioszkokon és megosztott infrastruktúrában.
Annak szabályozása, hogy mikor van engedélyezve
winapp init kérdéseket tesz fel, mielőtt bármit módosítana, és --use-defaults teljesen kihagyja a kérdést, így a fejlesztői mód érintetlen marad. Ez alapértelmezés szerint biztonságossá teszi a szkripteket és a CI-futtatásokat:
winapp init --use-defaults
Ha inkább saját maga kezelné a beállítást, engedélyezze egyszer a fejlesztői > beállítások > rendszerén > keresztül, és a parancssori felület észleli, és továbblép.
Kikapcsolás
Használja a Beállítások > rendszert > fejlesztőknek , és kapcsolja ki a fejlesztői módot . Ez az ajánlott elérési út, mivel a Beállítások a társított operációsrendszer-állapotot is törli. A beállításjegyzék értékének későbbi ellenőrzéséhez:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' `
-Name AllowDevelopmentWithoutDevLicense, AllowAllTrustedApps
A fejlesztői mód kikapcsolása nem távolítja el a megbízható tanúsítványokat vagy a már telepített csomagokat – lásd : Megbízható tanúsítvány eltávolítása.
Éles környezethez történő aláírás
A fejlesztési tanúsítvány csak olyan személyek számára működik, akik kifejezetten megbíztak benne. Az alkalmazás terjesztéséhez írja alá egy olyan azonosítóval, amelyben a Windows már megbízik.
Aláírási identitás kiválasztása
Megbízható Azure-aláírás – felhőalapú aláírási szolgáltatás. A titkos kulcs soha nem létezik a buildelési gépen, ezért nem
.pfxlehet kézzel védeni, kiszivárogni vagy elforgatni. Használja awinapp az-signelemet, amely az Azure szabványos hitelesítőadat-láncával hitelesít, és működik a GitHub Actions OIDC-vel vagy felügyelt identitással.winapp az-sign .\MyApp.msixEgy megbízható hitelesítésszolgáltatótól származó kódaláíró tanúsítvány – adja meg a(z)
winapp signszámára második pozicionális argumentumként, a jelszavát pedig a(z)--passwordelemben. Ezután Ön felelős a kulcsanyag biztonságos tárolásáért; tárolja hardveres tokenben, kulcstárolóban vagy a CI-szolgáltató titkos tárolójában, és soha ne a tárolóban.A Microsoft Store – ha kizárólag az Áruházon keresztül terjeszti, aláírja a csomagot, és nem kell aláírnia a beküldés előtt.
A tanúsítvány tulajdonosának minden esetben meg kell egyeznie a Publisher jegyzékben szereplő értékkel, beleértve a ritka csomagokat is.
Tartsa távol az aláíráshoz használt titkos kulcsokat a kódtártól
A tanúsítványjelszavak nem konfigurációs fájlban, hanem a CI titkos tárában találhatóak. Olvassa el őket a környezetből ahelyett, hogy kemény kódolást alkalmaz:
winapp sign .\MyApp.msix $env:SIGNING_CERT_PATH --password $env:SIGNING_CERT_PASSWORD
Ugyanez vonatkozik a verziókezelőbe bejelentkeztetett buildkonfigurációra is, például egy Electron Forge-konfigurációra — lásd: Electron-csomagolás.
winapp az-sign teljes mértékben elkerüli a problémát, mert nincs átadandó jelszó.
Közzététel előtt
A helyi tesztelésről a terjesztésre való áttérés rövid ellenőrzőlistája:
- A csomag CA által kiadott tanúsítvánnyal vagy Megbízható Azure-aláírás használatával van aláírva, illetve be van küldve az Áruházba — nem ezzel:
devcert.pfx. - Sem a
.pfx, sem a.cerfájl nincs a csomagolt kimenetben. - Nem jelenik meg tanúsítványjelszó a véglegesített fájlokban, buildszkriptekben vagy CI-naplókban.
- A tanúsítvány tárgya megegyezik a jegyzékfájlval
Publisher. - A fejlesztői tanúsítványok és a fejlesztői mód nem engedélyezett olyan gépeken, amelyeknek csak az alkalmazást kell futtatniuk .
Biztonsági probléma bejelentése
Ha biztonsági rést szeretne jelenteni a winapp parancssori felületén, kövesse a SECURITY.md folyamatát. Biztonsági bejelentésekhez kérjük, ne nyissanak nyilvános GitHub issue-t.
Kapcsolódó témakörök
Windows developer