Aracılığıyla paylaş


Paket imzalama için sertifika oluşturma

Bu makalede, PowerShell araçlarını kullanarak uygulama paketi imzalama sertifikası oluşturma ve bu sertifikaya güvenme açıklanmaktadır (CMD araçları için buraya bakın). UWP uygulamalarını paketlemek ve masaüstü uygulamalarını paketlemek için Visual Studio kullanmanız önerilir, ancak uygulamanızı geliştirmek için Visual Studio kullanmadıysanız uygulamayı el ile paketlemeye devam edebilirsiniz.

Önkoşullar

  • Paketlenmiş veya paketlenmemiş bir uygulama
    AppxManifest.xml dosyası içeren bir uygulama. Son uygulama paketini imzalamak için kullanılacak sertifikayı oluştururken bildirim dosyasına başvurmanız gerekir. Bir uygulamayı el ile paketleme hakkında ayrıntılı bilgi için bkz. MakeAppx.exe aracıyla uygulama paketi oluşturma.

  • Ortak Anahtar Altyapısı (PKI) Cmdlet'leri
    İmzalama sertifikanızı oluşturmak ve dışarı aktarmak için PKI cmdlet'lerine ihtiyacınız vardır. Daha fazla bilgi için bkz. Ortak Anahtar Altyapısı Cmdlet'leri.

Kendinden imzalı sertifika oluşturma

Otomatik olarak imzalanan sertifika, uygulamayı Mağaza'da yayımlamaya hazır olmadan önce test etmek için kullanışlıdır. Otomatik olarak imzalanan bir sertifika oluşturmak için bu bölümde açıklanan adımları izleyin.

Uyarı

Otomatik olarak imzalanan bir sertifika oluşturduğunuzda ve kullandığınızda yalnızca sertifikanızı yükleyen ve güvenen kullanıcılar uygulamanızı çalıştırabilir. Bu, test için kolayca uygulanabilir ancak ek kullanıcıların uygulamanızı yüklemesini engelleyebilir. Uygulamanızı yayımlamaya hazır olduğunuzda, güvenilir bir kaynak tarafından verilen bir sertifika kullanmanızı öneririz. Bu merkezi güven sistemi, uygulama ekosisteminin kullanıcıları kötü amaçlı aktörlerden korumak için doğrulama düzeylerine sahip olmasını sağlamaya yardımcı olur.

Paketlenmiş uygulamanızın konusunu belirleme

Uygulama paketinizi imzalamak için sertifika kullanmak için, sertifikadaki "Konu" öğesinin uygulamanızın bildirimindeki "Yayımcı" bölümüyle eşleşmesi gerekir .

Örneğin, uygulamanızın AppxManifest.xml dosyasındaki "Kimlik" bölümü şöyle görünmelidir:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

Bu durumda "Publisher", sertifikanızı oluşturmak için kullanılması gereken "CN=Contoso Software, O=Contoso Corporation, C=US" şeklindedir.

Sertifika oluşturmak için New-SelfSignedCertificate kullanma

Otomatik olarak imzalanan bir sertifika oluşturmak için New-SelfSignedCertificate PowerShell cmdlet'ini kullanın. New-SelfSignedCertificate'in özelleştirme için çeşitli parametreleri vardır, ancak bu makalenin amacı doğrultusunda SignTool ile çalışacak basit bir sertifika oluşturmaya odaklanacağız. Bu cmdlet'in diğer örnekleri ve kullanımları için bkz. New-SelfSignedCertificate.

Önceki örnekteki AppxManifest.xml dosyasına bağlı olarak, sertifika oluşturmak için aşağıdaki söz dizimini kullanmanız gerekir. Yükseltilmiş bir PowerShell isteminde:

New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -FriendlyName "Your friendly name goes here"

Bazı parametrelerle ilgili aşağıdaki ayrıntılara dikkat edin:

  • KeyUsage: Bu parametre sertifikanın ne için kullanılabileceğini tanımlar. Otomatik imzalama sertifikası için bu parametre DigitalSignature olarak ayarlanmalıdır.

  • TextExtension: Bu parametre aşağıdaki uzantılar için ayarları içerir:

    • Genişletilmiş Anahtar Kullanımı (EKU): Bu uzantı, sertifikalı ortak anahtarın kullanılabilmesi için ek amaçları gösterir. Otomatik imzalama sertifikası için bu parametre, sertifikanın kod imzalama için kullanılacağını gösteren "2.5.29.37={text}1.3.6.1.5.5.7.3.3" uzantı dizesini içermelidir.

    • Temel Kısıtlamalar: Bu uzantı, sertifikanın bir Sertifika Yetkilisi (CA) olup olmadığını gösterir. Otomatik imzalama sertifikası için bu parametre, sertifikanın bir son varlık (CA değil) olduğunu belirten "2.5.29.19={text}" uzantı dizesini içermelidir.

Bu komut çalıştırıldıktan sonra sertifika oluşturulur ve Kullanıcı Kişisel sertifika deposuna eklenir. Komutun sonucu sertifikanın parmak izini de üretir.

Aşağıdaki komutları kullanarak sertifikanızı bir PowerShell penceresinde görüntüleyebilirsiniz:

Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

Bu, Kullanıcı Kişisel sertifika deposundaki tüm sertifikaları görüntüler.

Bu sertifikayla imzalanan bir uygulamayı yüklemek için sertifikanın Yerel Makine Güvenilen Kişiler sertifika deposuna aktarılması gerekir.

Sertifikayı PFX dosyasına aktarma

Yeni oluşturulan sertifikayı Yerel Makine Güvenilen Kişiler sertifika deposuna aktarmak için, önce Export-PfxCertificate cmdlet'ini kullanarak bir Kişisel Bilgi Değişimi (PFX) dosyasına aktarmanız gerekir.

Export-PfxCertificate kullanırken parola oluşturup kullanmanız veya parola olmadan dosyaya erişebilecek kullanıcıları veya grupları belirtmek için "-ProtectTo" parametresini kullanmanız gerekir. "-Password" veya "-ProtectTo" parametresini kullanmazsanız hatanın görüntüleneceğini unutmayın. Kullanıcı hesabınız bir etki alanı denetleyicisi tarafından desteklendiğinde "-ProtectTo" yararlı olurken genel kullanım için "-Password" önerilir.

Parola kullanımı

$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password

ProtectTo kullanımı

Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>

Sertifikayı Yerel Makine Güvenilen Kişiler deposuna aktarma

Sertifikayı bir PFX dosyasına aktardığınıza göre, yönetici PowerShell oturumundan Import-PfxCertificate cmdlet'ini kullanarak sertifikayı Yerel Makine Güvenilen Kişiler deposuna aktarabilirsiniz.

Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -Password $password -FilePath <FilePath>.pfx

Artık sertifika güvenilir olduğuna göre, uygulama paketinizi SignTool ile imzalamaya hazırsınız. El ile paketleme işleminin sonraki adımı için bkz. SignTool kullanarak uygulama paketini imzalama.

Güvenlikle ilgili dikkat edilmesi gerekenler

yerel makine sertifika depolarına sertifika ekleyerek bilgisayardaki tüm kullanıcıların sertifika güvenini etkilersiniz. Sistem güvenini tehlikeye atmak için kullanılmalarını önlemek için artık gerekli olmadığında bu sertifikaları kaldırmanız önerilir.