Share via


macOS Catalina Notarization és a .NET letöltésekre és projektekre gyakorolt hatás

A macOS Catalina (10.15-ös verzió) verziótól kezdve a 2019. június 1. után készült és fejlesztői azonosítóval elosztott összes szoftvert közjegyzővel kell elérhetővé tenni. Ez a követelmény a .NET-futtatókörnyezetre, a .NET SDK-ra és a .NET-tel létrehozott szoftverekre vonatkozik. Ez a cikk a .NET és a macOS-alapú notarizálással kapcsolatos gyakori forgatókönyveket ismerteti.

A .NET telepítése

A .NET telepítőit (futtatókörnyezetet és SDK-t is) 2020. február 18. óta notarizálták. A korábbi kiadású verziók nem lesznek notarizálva. A .NET nem hitelesített verziójának manuális telepítéséhez először töltse le a telepítőt, majd használja a sudo installer parancsot. További információ: Letöltés és manuális telepítés macOS rendszeren.

Natív appHost

A .NET SDK 7- és újabb verzióiban egy natív Mach-O-végrehajtható appHost jön létre az alkalmazáshoz. Ezt a végrehajtható fájlt általában a .NET hívja meg, amikor a projekt lefordítja, közzéteszi vagy futtatja a dotnet run parancsot. Az alkalmazás nem appHost verziója egy dll-fájl , amelyet a dotnet <app.dll> parancs hívhat meg.

Helyi futtatáskor az SDK alkalmi aláírással aláírja az apphostot, amely lehetővé teszi az alkalmazás helyi futtatását. Az alkalmazás terjesztésekor az Apple útmutatása szerint megfelelően alá kell írnia az alkalmazást.

Az alkalmazást az apphost nélkül is terjesztheti, és a felhasználókra támaszkodva futtathatja az alkalmazást dotnet. Az appHost-létrehozás kikapcsolásához adja hozzá a UseAppHost logikai beállítást a projektfájlhoz, és állítsa be a következőrefalse: . Az appHost kapcsolóját a futtatott parancs parancssorában dotnet lévő paraméterrel -p:UseAppHost is kapcsolhatja:

  • Projektfájl

    <PropertyGroup>
      <UseAppHost>false</UseAppHost>
    </PropertyGroup>
    
  • Parancssori paraméter

    dotnet run -p:UseAppHost=false
    

Ha önállóan teszi közzé az alkalmazást, és nem tilthatja le, az appHostra van szükség.

A beállításról további információt a UseAppHost Microsoft.NET.Sdk MSBuild tulajdonságai című témakörben talál.

Az appHost környezete

Ha az appHost engedélyezve van a projektben, és ön a dotnet run parancsot használja az alkalmazás futtatásához, a rendszer az appHost kontextusában hívja meg az alkalmazást, és nem az alapértelmezett gazdagépet (az alapértelmezett gazdagép a dotnet parancs). Ha az appHost le van tiltva a projektben, a dotnet run parancs az alapértelmezett gazdagép környezetében futtatja az alkalmazást. Még akkor is, ha az appHost le van tiltva, az alkalmazás önállóként való közzététele létrehoz egy végrehajtható appHostot, és a felhasználók ezt a végrehajtható fájlt használják az alkalmazás futtatásához. Ha az alkalmazást az alapértelmezett gazdagéppel, a megosztott futtatókörnyezettel dotnet <filename.dll> futtatja, meghívja az alkalmazást.

Az appHostot használó alkalmazás meghívásakor az alkalmazás által elért tanúsítványpartíció eltér a hitelesített alapértelmezett gazdagéptől. Ha az alkalmazásnak hozzá kell férnie az alapértelmezett gazdagépen telepített tanúsítványokhoz, a dotnet run paranccsal futtassa az alkalmazást a projektfájlból, vagy használja a dotnet <filename.dll> parancsot az alkalmazás közvetlen elindításához.

Erről a forgatókönyvről további információt a ASP.NET Core és a macOS, valamint a tanúsítványok című szakaszban talál.

ASP.NET Core, macOS és tanúsítványok

A .NET lehetővé teszi a macOS-kulcskarika tanúsítványainak kezelését az System.Security.Cryptography.X509Certificates osztálysal. A macOS-kulcskarikához való hozzáférés az alkalmazások identitását használja elsődleges kulcsként, amikor eldönti, hogy melyik partíciót vegye figyelembe. Az aláíratlan alkalmazások például titkos kulcsokat tárolnak az aláíratlan partíción, de az aláírt alkalmazások a titkos kulcsaikat csak azok partícióiban tárolják, amelyekhez csak ők férhetnek hozzá. Az alkalmazást meghívó végrehajtási forrás dönti el, hogy melyik partíciót használja.

A .NET három végrehajtási forrást biztosít: appHost, alapértelmezett gazdagép (a dotnet parancs) és egy egyéni gazdagép. Minden végrehajtási modell különböző identitásokkal rendelkezhet, aláírva vagy aláírva, és különböző partíciókhoz férhet hozzá a kulcskarikán belül. Előfordulhat, hogy az egyik módban importált tanúsítványok nem érhetők el egy másikból. A .NET közjegyző által hitelesített verziói például aláírt alapértelmezett gazdagéppel rendelkeznek. A tanúsítványokat a rendszer az identitása alapján importálja egy biztonságos partícióba. Ezek a tanúsítványok nem érhetők el egy létrehozott appHostból, mivel az appHost eseti aláírással rendelkezik.

Egy másik példa alapértelmezés szerint ASP.NET Core egy alapértelmezett SSL-tanúsítványt importál az alapértelmezett gazdagépen keresztül. ASP.NET az appHostot használó alapvető alkalmazások nem férnek hozzá ehhez a tanúsítványhoz, és hibaüzenetet kapnak, ha a .NET észleli, hogy a tanúsítvány nem érhető el. A hibaüzenet útmutatást nyújt a probléma megoldásához.

Ha tanúsítványmegosztásra van szükség, a macOS konfigurációs beállításokat biztosít a security segédprogrammal.

A ASP.NET Core-tanúsítványokkal kapcsolatos problémák elhárításáról további információt a HTTPS kényszerítése a ASP.NET Core-ban című témakörben talál.

Alapértelmezett jogosultságok

. A NET alapértelmezett gazdagépe (a dotnet parancs) alapértelmezett jogosultságokkal rendelkezik. Ezek a jogosultságok szükségesek a .NET megfelelő működéséhez. Előfordulhat, hogy az alkalmazásnak további jogosultságokra van szüksége, ebben az esetben létre kell hoznia és használnia kell egy appHostot , majd helyileg hozzá kell adnia a szükséges jogosultságokat.

A .NET-hez tartozó jogosultságok alapértelmezett készlete:

  • com.apple.security.cs.allow-jit
  • com.apple.security.cs.allow-unsigned-executable-memory
  • com.apple.security.cs.allow-dyld-environment-variables
  • com.apple.security.cs.disable-library-validation

.NET-alkalmazás közjegyzői jelölése

Ha azt szeretné, hogy az alkalmazás macOS Catalinán (10.15-ös vagy újabb verzió) fusson, akkor érdemes lesz az alkalmazást közjegyzőhöz rendelni. Az alkalmazással a notarizáláshoz beküldött appHostot legalább ugyanazokkal az alapértelmezett jogosultságokkal kell használni a .NET Core-hoz.

Következő lépések