Buat sertifikat publik yang ditandatangani sendiri untuk mengautentikasi aplikasi Anda

ID Microsoft Entra mendukung dua jenis autentikasi untuk perwakilan layanan: autentikasi berbasis kata sandi (rahasia aplikasi) dan autentikasi berbasis sertifikat. Meskipun rahasia aplikasi dapat dengan mudah dibuat di portal Azure atau menggunakan Microsoft API seperti Microsoft Graph, rahasia tersebut berumur panjang, dan tidak seaman sertifikat. Oleh karena itu, disarankan agar aplikasi Anda menggunakan sertifikat daripada rahasia.

Untuk pengujian, Anda dapat menggunakan sertifikat publik yang ditandatangani sendiri alih-alih sertifikat yang ditandatangani Otoritas Sertifikat (CA). Dalam cara ini, Anda akan menggunakan PowerShell untuk membuat dan mengekspor sertifikat yang ditandatangani sendiri.

Perhatian

Sertifikat yang ditandatangani sendiri adalah sertifikat digital yang tidak ditandatangani oleh CA pihak ketiga tepercaya. Sertifikat yang ditandatangani sendiri dibuat, dikeluarkan, dan ditandatangani oleh perusahaan atau pengembang yang bertanggung jawab atas situs web atau perangkat lunak yang ditandatangani. Inilah sebabnya mengapa sertifikat yang ditandatangani sendiri dianggap tidak aman untuk situs web dan aplikasi yang menghadap publik.

Saat membuat sertifikat menggunakan PowerShell, Anda dapat menentukan parameter seperti algoritma kriptografi dan hash, periode validitas sertifikat, dan nama domain. Sertifikat kemudian dapat diekspor dengan atau tanpa kunci privatnya tergantung pada kebutuhan aplikasi Anda.

Aplikasi yang memulai sesi otentikasi memerlukan kunci pribadi sementara aplikasi yang mengkonfirmasi otentikasi memerlukan kunci publik. Jadi, jika Anda mengautentikasi dari aplikasi desktop PowerShell ke ID Microsoft Entra, Anda hanya mengekspor kunci publik (file .cer) dan mengunggahnya ke portal Azure. Aplikasi PowerShell menggunakan kunci privat dari penyimpanan sertifikat lokal Anda untuk memulai autentikasi dan mendapatkan token akses untuk memanggil API Microsoft seperti Microsoft Graph.

Aplikasi Anda mungkin juga berjalan dari mesin lain, seperti Azure Automation. Dalam skenario ini, Anda mengekspor pasangan kunci publik dan privat dari penyimpanan sertifikat lokal Anda, mengunggah kunci publik ke portal Azure, dan kunci privat (file .pfx) ke Azure Automation. Aplikasi Anda yang berjalan di Azure Automation akan menggunakan kunci privat untuk memulai autentikasi dan mendapatkan token akses untuk memanggil API Microsoft seperti Microsoft Graph.

Artikel ini menggunakan New-SelfSignedCertificate cmdlet PowerShell untuk membuat sertifikat yang ditandatangani sendiri dan Export-Certificate cmdlet untuk mengekspornya ke lokasi yang mudah diakses. Cmdlets ini built-in untuk versi modern Windows (Windows 8.1 dan lebih besar, dan Windows Server 2012R2 dan lebih besar). Sertifikat yang ditandatangani sendiri akan memiliki konfigurasi berikut:

  • Panjang kunci 2048-bit. Sementara nilai yang lebih panjang didukung, ukuran 2048-bit sangat dianjurkan untuk kombinasi keamanan dan kinerja terbaik.
  • Menggunakan algoritma kriptografi RSA. MICROSOFT Entra ID saat ini hanya mendukung RSA.
  • Sertifikat ini ditandatangani dengan algoritma hash SHA256. MICROSOFT Entra ID juga mendukung sertifikat yang ditandatangani dengan algoritma hash SHA384 dan SHA512.
  • Sertifikat ini hanya berlaku untuk satu tahun.
  • Sertifikat ini didukung untuk digunakan untuk otentikasi klien dan server.

Untuk menyesuaikan tanggal mulai dan kedaluwarsa dan properti sertifikat lainnya, lihat New-SelfSignedCertificate.

Membuat dan mengekspor sertifikat publik Anda

Gunakan sertifikat yang Anda buat menggunakan metode ini untuk mengautentikasi dari aplikasi yang berjalan dari mesin Anda. Misalnya, autentikasi dari PowerShell.

Dalam perintah PowerShell, jalankan perintah berikut dan biarkan sesi konsol PowerShell terbuka. Ganti {certificateName} dengan nama yang ingin Anda berikan pada sertifikat Anda.

$certname = "{certificateName}"    ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

Variabel $cert dalam perintah sebelumnya menyimpan sertifikat Anda dalam sesi saat ini dan memungkinkan Anda untuk mengekspornya.

Perintah di bawah ini mengekspor sertifikat dalam format .cer . Anda juga dapat mengekspornya dalam format lain yang didukung pada portal Azure termasuk .pem dan .crt.


Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer"   ## Specify your preferred location

Sertifikat Anda sekarang siap untuk diunggah ke portal Azure. Setelah diunggah, ambil cap jempol sertifikat untuk digunakan untuk mengautentikasi aplikasi Anda.

(Opsional): Ekspor sertifikat publik Anda dengan kunci privatnya

Jika aplikasi Anda akan berjalan dari komputer atau cloud lain, seperti Azure Automation, Anda juga memerlukan kunci privat.

Mengikuti dari perintah sebelumnya, buat kata sandi untuk kunci privat sertifikat Anda dan simpan dalam variabel. Ganti {myPassword} dengan kata sandi yang ingin Anda gunakan untuk melindungi kunci privat sertifikat Anda.


$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText  ## Replace {myPassword}

Menggunakan kata sandi yang Anda simpan dalam $mypwd variabel, amankan dan ekspor kunci privat Anda menggunakan perintah ;


Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd   ## Specify your preferred location

Sertifikat Anda (file .cer) sekarang siap untuk diunggah ke portal Azure. Kunci privat (file.pfx ) dienkripsi dan tidak dapat dibaca oleh pihak lain. Setelah diunggah, ambil thumbprint sertifikat, yang dapat Anda gunakan untuk mengautentikasi aplikasi Anda.

Tugas opsional: Hapus sertifikat dari keystore.

Anda dapat menghapus pasangan kunci dari penyimpanan pribadi Anda dengan menjalankan perintah berikut untuk mengambil thumbprint sertifikat.


Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName

Kemudian, salin cap jempol yang ditampilkan dan gunakan untuk menghapus sertifikat dan kunci pribadinya.


Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey

Ketahui tanggal kedaluwarsa sertifikat Anda

Sertifikat yang ditandatangani sendiri yang Anda buat dengan mengikuti langkah-langkah di atas memiliki masa pakai terbatas sebelum kedaluwarsa. Di bagian Pendaftaran aplikasi portal Azure, layar Sertifikat & rahasia menampilkan tanggal kedaluwarsa sertifikat. Jika Anda menggunakan Azure Automation, layar Sertifikat pada akun Otomasi menampilkan tanggal kedaluwarsa sertifikat. Ikuti langkah-langkah sebelumnya untuk membuat sertifikat baru yang ditandatangani sendiri.

Langkah berikutnya

Mengelola sertifikat untuk akses menyeluruh federasi di MICROSOFT Entra ID