Tanda tangan digital skrip atau file yang dapat dieksekusi memungkinkan pengguna untuk memverifikasi bahwa file tersebut asli dan bahwa kodenya belum diubah oleh pihak ketiga. PowerShell juga memiliki kemampuan bawaan untuk menandatangani file skrip * .ps1.
Anda dapat menandatangani skrip PowerShell menggunakan jenis sertifikat khusus Kode Menandatangani. Sertifikat ini dapat diperoleh dari otoritas sertifikasi komersial eksternal, CA perusahaan internal, atau sertifikat yang ditandatangani sendiri (tentu saja, ini bukan pilihan terbaik).
Misalkan kita memiliki PKI - Layanan Sertifikat Direktori Aktif yang digunakan di domain kami. Kami meminta sertifikat baru dengan membuka halaman https: // CA-server-name / certsrv dan meminta sertifikat baru dengan templat Penandatanganan kode (templat ini harus sebelumnya disahkan dalam konsol Otoritas Sertifikasi).
Instal sertifikat yang diterima di toko sertifikat lokal komputer Anda.
Setelah sertifikat diterima, kami akan mengonfigurasi kebijakan eksekusi skrip PowerShell, hanya mengizinkan skrip yang ditandatangani untuk dijalankan. Nilai kebijakan default (Terbatas) memblokir eksekusi skrip apa pun. Untuk memungkinkan skrip yang ditandatangani dijalankan, Anda dapat mengubah jenis kebijakan menjadi AllSigned atau RemoteSigned, perbedaan di antaranya adalah bahwa RemoteSigned memerlukan tanda tangan hanya untuk skrip yang diterima dari Internet.
Set-ExecutionPolicy AllSigned -Force
Di objek yang terpisah, simpan sertifikat dari penyimpanan lokal untuk pengguna saat ini:
$ cert = (Dapatkan-ChildItem cert: \ CurrentUser \ my -CodeSigningCert) [0]
Kemudian kami akan menandatangani skrip menggunakan sertifikat ini:
Set-AuthenticodeSignature -Certificate $ cert -FilePath C: \ PS \ test_script.ps1
Kiat. Saat membuat sertifikat yang ditandatangani sendiri untuk kode penandatanganan menggunakan cmdlet Sertifikat-Diri Baru, Anda perlu menentukan jenis sertifikat Penandatanganan Kode:
New-SelfSignedCertificate -DnsName test1 -Type CodeSigning
Setelah membuat sertifikat, Anda harus mentransfernya dari konsol manajemen penyimpanan sertifikat (certmgr.msc) dari wadah perantara ke Root Tepercaya.
Anda dapat menandatangani skrip dengan sertifikat ini seperti ini:
Set-AuthenticodeSignature C: \ PS \ test_script.ps1 @ (gci Cert: \ LocalMachine \ My -DnsName test1 -codesigning) [0]
Setelah skrip PowerShell ditandatangani, blok tandatangan yang dibingkai dengan garis akan ditambahkan ke file teks skrip ps1
# SIG # Mulai blok tanda tangan
...
...
# SIG # Akhiri blok tanda tangan
Pertama kali Anda mencoba menjalankan skrip, peringatan muncul jika Anda memilih [A] Selalu jalankan, saat menjalankan skrip yang ditandatangani dengan sertifikat ini, peringatan tidak akan lagi muncul.
Apakah Anda ingin menjalankan perangkat lunak dari penerbit tidak terpercaya ini?
File C: \ PS \ test_script.ps1 diterbitkan oleh CN = test1 dan tidak dipercaya pada sistem Anda. Hanya jalankan skrip dari penerbit tepercaya.
Kiat. Sertifikat CA root tempat skrip ditandatangani harus dipercaya (jika tidak skrip tidak akan memulai sama sekali). Sertifikat yang dengannya skrip itu ditandatangani juga harus dipercaya, jika tidak skrip akan diluncurkan dengan konfirmasi. Berikut ini artikel untuk membantu Anda: Cara menambahkan sertifikat ke PC domain menggunakan GPOApa yang terjadi jika saya mengubah kode untuk skrip PowerShell yang ditandatangani? Peluncurannya akan diblokir, menunjukkan bahwa isi skrip telah diubah.
C: \ PS \ test_script.ps1: File C: \ PS \ test_script.ps1 tidak dapat dimuat. Isi file C: \ PS \ test_script.ps1 mungkin telah diubah oleh pengguna atau proses yang tidak sah, karena hash file tidak cocok dengan hash yang disimpan dalam tanda tangan digital. Script tidak dapat berjalan pada sistem yang ditentukan.Dengan demikian, modifikasi apa pun dari naskah yang ditandatangani akan membutuhkan penandatanganan kembali..