Membuat sertifikat untuk penandatanganan paket

Artikel ini menjelaskan cara membuat dan mengekspor sertifikat untuk penandatanganan paket aplikasi menggunakan alat PowerShell. Disarankan agar Anda menggunakan Visual Studio untuk mengemas aplikasi UWP dan mengemas aplikasi desktop, tetapi Anda masih dapat mengemas aplikasi secara manual jika Anda tidak menggunakan Visual Studio untuk mengembangkan aplikasi Anda.

Prasyarat

  • Aplikasi yang dikemas atau tidak dikemas
    Aplikasi yang berisi file AppxManifest.xml. Anda harus mereferensikan file manifes saat membuat sertifikat yang akan digunakan untuk menandatangani paket aplikasi akhir. Untuk detail tentang cara mengemas aplikasi secara manual, lihat Membuat paket aplikasi dengan alat MakeAppx.exe.

  • Cmdlet Infrastruktur Kunci Umum (PKI)
    Anda memerlukan cmdlet PKI untuk membuat dan mengekspor sertifikat penandatanganan Anda. Untuk informasi selengkapnya, lihat Cmdlet Infrastruktur Kunci Umum.

Membuat sertifikat yang ditandatangani sendiri

Sertifikat yang ditandatangani sendiri berguna untuk menguji aplikasi Anda sebelum Anda siap untuk menerbitkannya ke Store. Ikuti langkah-langkah yang diuraikan di bagian ini untuk membuat sertifikat yang ditandatangani sendiri.

Catatan

Saat Anda membuat dan menggunakan sertifikat yang ditandatangani sendiri hanya pengguna yang menginstal dan memercayai sertifikat Anda yang dapat menjalankan aplikasi Anda. Ini mudah diterapkan untuk pengujian tetapi dapat mencegah pengguna tambahan menginstal aplikasi Anda. Saat Anda siap untuk menerbitkan aplikasi, kami sarankan Anda menggunakan sertifikat yang dikeluarkan oleh sumber tepercaya. Sistem kepercayaan terpusat ini membantu memastikan bahwa ekosistem aplikasi memiliki tingkat verifikasi untuk melindungi pengguna dari aktor jahat.

Menentukan subjek aplikasi kemasan Anda

Untuk menggunakan sertifikat untuk menandatangani paket aplikasi Anda, "Subjek" di sertifikat harus cocok dengan bagian "Penerbit" di manifes aplikasi Anda.

Misalnya, bagian "Identitas" di file AppxManifest.xml aplikasi Anda akan terlihat seperti ini:

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

"Penerbit", dalam hal ini, adalah "CN=Contoso Software, O=Contoso Corporation, C=US" yang perlu digunakan untuk membuat sertifikat Anda.

Menggunakan New-SelfSignedCertificate untuk membuat sertifikat

Gunakan cmdlet PowerShell New-SelfSignedCertificate untuk membuat sertifikat yang ditandatangani sendiri. New-SelfSignedCertificate memiliki beberapa parameter untuk penyesuaian, tetapi untuk tujuan artikel ini, kami akan fokus pada pembuatan sertifikat sederhana yang akan berfungsi dengan SignTool. Untuk contoh dan penggunaan cmdlet ini, lihat New-SelfSignedCertificate.

Berdasarkan file AppxManifest.xml dari contoh sebelumnya, Anda harus menggunakan sintaks berikut untuk membuat sertifikat. Dalam prompt PowerShell yang ditingkatkan:

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

Perhatikan detail berikut tentang beberapa parameter:

  • KeyUsage: Parameter ini menentukan untuk apa sertifikat dapat digunakan. Untuk sertifikat penandatanganan mandiri, parameter ini harus diatur ke DigitalSignature.

  • TextExtension: Parameter ini mencakup pengaturan untuk ekstensi berikut:

    • Penggunaan Kunci yang Diperluas (EKU): Ekstensi ini menunjukkan tujuan tambahan di mana kunci publik bersertifikat dapat digunakan. Untuk sertifikat penandatanganan mandiri, parameter ini harus menyertakan string ekstensi "2.5.29.37={text}1.3.6.1.5.5.7.3.3", yang menunjukkan bahwa sertifikat akan digunakan untuk penandatanganan kode.

    • Batasan Dasar: Ekstensi ini menunjukkan apakah sertifikat adalah Otoritas Sertifikat (CA) atau tidak. Untuk sertifikat penandatanganan mandiri, parameter ini harus menyertakan string ekstensi "2.5.29.19={text}", yang menunjukkan bahwa sertifikat adalah entitas akhir (bukan CA).

Setelah menjalankan perintah ini, sertifikat akan ditambahkan ke penyimpanan sertifikat lokal, seperti yang ditentukan dalam parameter "-CertStoreLocation". Hasil perintah juga akan menghasilkan thumbprint sertifikat.

Anda bisa menampilkan sertifikat Anda di jendela PowerShell dengan menggunakan perintah berikut:

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

Ini akan menampilkan semua sertifikat di penyimpanan lokal Anda.

Mengekspor sertifikat

Untuk mengekspor sertifikat di penyimpanan lokal ke file Pertukaran Informasi Pribadi (PFX), gunakan cmdlet Export-PfxCertificate .

Saat menggunakan Export-PfxCertificate, Anda harus membuat dan menggunakan kata sandi atau menggunakan parameter "-ProtectTo" untuk menentukan pengguna atau grup mana yang dapat mengakses file tanpa kata sandi. Perhatikan bahwa kesalahan akan ditampilkan jika Anda tidak menggunakan parameter "-Password" atau "-ProtectTo".

Penggunaan kata sandi

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

Penggunaan ProtectTo

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

Setelah membuat dan mengekspor sertifikat, Anda siap untuk menandatangani paket aplikasi dengan SignTool. Untuk langkah berikutnya dalam proses pengemasan manual, lihat Menandatangani paket aplikasi menggunakan SignTool.

Pertimbangan keamanan

Dengan menambahkan sertifikat ke penyimpanan sertifikat komputer lokal, Anda memengaruhi kepercayaan sertifikat semua pengguna di komputer. Disarankan agar Anda menghapus sertifikat tersebut ketika sertifikat tersebut tidak lagi diperlukan untuk mencegah sertifikat tersebut digunakan untuk membahayakan kepercayaan sistem.