macOS Catalina Notarization ve .NET indirmeleri ve projeleri üzerindeki etkisi
macOS Catalina 'dan (sürüm 10.15) başlayarak, 1 Haziran 2019'dan sonra oluşturulan ve Geliştirici Kimliği ile dağıtılan tüm yazılımların noter onaylı olması gerekir. Bu gereksinim .NET çalışma zamanı, .NET SDK'sı ve .NET ile oluşturulan yazılımlar için geçerlidir. Bu makalede .NET ve macOS noter tasdikinde karşılaşabileceğiniz yaygın senaryolar açıklanmaktadır.
.NET'i yükleme
.NET (hem çalışma zamanı hem de SDK) yükleyicileri 18 Şubat 2020'den bu yana noter onaylıdır. Önceki sürümler noter onaylı değildir. .NET'in noter onaylı olmayan bir sürümünü önce yükleyiciyi indirerek ve ardından indirilen yükleyiciyle komutunu kullanarak sudo installer
el ile yükleyebilirsiniz.
Yerel appHost
Uygulamanız derlendiğinde, yerel bir Mach-O yürütülebilir dosyası olan appHost oluşturulur. Bu yürütülebilir dosya genellikle projeniz derlendiğinde, yayımladığında veya komutuyla çalıştırıldığında .NET tarafından çağrılır dotnet run
. Uygulamanızın appHost olmayan sürümü, komutu tarafından dotnet <app.dll>
çağrılabilen bir dll dosyasıdır.
Yerel olarak çalıştırıldığında SDK, uygulamanın yerel olarak çalışmasını sağlayan geçici imzalamayı kullanarak apphost'u imzalar. Uygulamanızı dağıtırken, Apple kılavuzuna göre uygulamanızı düzgün bir şekilde imzalamanız gerekir.
Ayrıca uygulamanızı apphost olmadan dağıtabilir ve kullanarak dotnet
uygulamanızı çalıştırmak için kullanıcılara güvenebilirsiniz. appHost oluşturma özelliğini kapatmak için proje dosyasına boole ayarını ekleyin UseAppHost
ve olarak false
ayarlayın. AppHost'u, çalıştırdığınız belirli dotnet
komutun -p:UseAppHost
komut satırındaki parametresiyle de değiştirebilirsiniz:
Proje dosyası
<PropertyGroup> <UseAppHost>false</UseAppHost> </PropertyGroup>
Komut satırı parametresi
dotnet run -p:UseAppHost=false
Uygulamanızı bağımsız olarak yayımladığınızda appHost gereklidir ve uygulamayı devre dışı bırakamazsınız.
Ayar hakkında UseAppHost
daha fazla bilgi için bkz . Microsoft.NET.Sdk için MSBuild özellikleri.
appHost bağlamı
Projenizde appHost etkinleştirildiğinde ve uygulamanızı çalıştırmak için komutunu kullandığınızda dotnet run
, uygulama varsayılan ana bilgisayar bağlamında değil appHost bağlamında çağrılır (varsayılan ana bilgisayar komutudur dotnet
). appHost projenizde devre dışı bırakılırsa, dotnet run
komut uygulamanızı varsayılan konak bağlamında çalıştırır. appHost devre dışı bırakılsa bile, uygulamanızı bağımsız olarak yayımlamak bir appHost yürütülebilir dosyası oluşturur ve kullanıcılar uygulamanızı çalıştırmak için bu yürütülebilir dosyayı kullanır. Uygulamanızı ile dotnet <filename.dll>
çalıştırmak, uygulamayı varsayılan ana bilgisayar olan paylaşılan çalışma zamanıyla çağırır.
appHost kullanan bir uygulama çağrıldığında, uygulama tarafından erişilen sertifika bölümü noter onaylı varsayılan konaktan farklıdır. Uygulamanızın varsayılan ana bilgisayar aracılığıyla yüklenen sertifikalara erişmesi gerekiyorsa, komutunu kullanarak dotnet run
uygulamanızı proje dosyasından çalıştırın veya komutunu kullanarak dotnet <filename.dll>
uygulamayı doğrudan başlatın.
Bu senaryo hakkında daha fazla bilgi ASP.NET Core ve macOS ve sertifikalar bölümünde sağlanır.
ASP.NET Core, macOS ve sertifikalar
.NET, macOS Anahtar Zincirindeki sertifikaları sınıfıyla System.Security.Cryptography.X509Certificates yönetme olanağı sağlar. macOS Anahtar Zincirine erişim, dikkate alınacak bölüme karar verirken birincil anahtar olarak uygulama kimliğini kullanır. Örneğin, imzalanmamış uygulamalar gizli dizileri imzasız bölümde depolar, ancak imzalı uygulamalar gizli dizilerini yalnızca erişebilecekleri bölümlerde depolar. Hangi bölümün kullanılacağına uygulamanızı çağıran yürütme kaynağı karar verir.
.NET üç yürütme kaynağı sağlar: appHost, varsayılan konak ( dotnet
komut) ve özel bir konak. Her yürütme modelinin imzalı veya imzasız farklı kimlikleri olabilir ve Anahtarlık içindeki farklı bölümlere erişimi olabilir. Bir mod tarafından içeri aktarılan sertifikalara başka bir moddan erişilemiyor olabilir. Örneğin, .NET'in noter onaylı sürümlerinde imzalanmış varsayılan bir ana bilgisayar vardır. Sertifikalar, kimliğine göre güvenli bir bölüme aktarılır. appHost geçici olarak imzalandığından, bu sertifikalara oluşturulan appHost'tan erişilemez.
Varsayılan olarak ASP.NET Core'un varsayılan ana bilgisayar aracılığıyla varsayılan SSL sertifikasını içeri aktardığı başka bir örnek. ASP.NET AppHost kullanan Core uygulamaları bu sertifikaya erişemez ve .NET sertifikanın erişilebilir olmadığını algıladığında bir hata alır. Hata iletisi, bu sorunun nasıl düzeltileceğini açıklayan yönergeler sağlar.
Sertifika paylaşımı gerekiyorsa, macOS yardımcı programıyla security
yapılandırma seçenekleri sağlar.
ASP.NET Core sertifika sorunlarını giderme hakkında daha fazla bilgi için bkz . ASP.NET Core'da HTTPS'yi zorunlu kılma.
Varsayılan yetkilendirmeler
. NET'in varsayılan ana bilgisayarının ( dotnet
komut) bir dizi varsayılan yetkilendirmesi vardır. Bu yetkilendirmeler .NET'in düzgün bir şekilde çalıştırılması için gereklidir. Uygulamanızın ek yetkilendirmelere ihtiyacı olabilir. Bu durumda bir appHost oluşturup kullanmanız ve ardından gerekli yetkilendirmeleri yerel olarak eklemeniz gerekir.
.NET için varsayılan yetkilendirme kümesi:
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 uygulamasını noter olarak belirleme
Uygulamanızın macOS Catalina (sürüm 10.15) veya üzeri sürümlerde çalışmasını istiyorsanız, uygulamanızı noter olarak almak istersiniz. Noter tasdik için uygulamanızla gönderdiğiniz appHost, .NET Core için en az aynı varsayılan yetkilendirmelerle kullanılmalıdır.
Sonraki adımlar
- macOS'a .NET yükleyin.