Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Cara Menggunakan PowerShell untuk Mengonfigurasi IIS di Beberapa Server

Posted on June 22, 2022 by Syauqi Wiryahasana
PowerShell adalah alat yang sangat baik untuk mengelola semua hal Windows. Namun, itu juga dapat melakukan sedikit pekerjaan untuk Anda saat mengonfigurasi Layanan Informasi Internet (IIS), dan menjadi lebih baik ketika Anda dapat menggunakannya untuk mengonfigurasi server IIS secara massal. bekerja, Anda cenderung bertanya pada diri sendiri, "Dapatkah PowerShell membuat ini lebih mudah bagi saya?" Itu hampir selalu memulai perjalanan pembelajaran yang hanya membantu Anda untuk lebih memahami PowerShell. Berpikir tentang tugas mengonfigurasi berbagai komponen IIS untuk beberapa server, langkah-langkahnya dapat dipecah menjadi langkah-langkah logis, yang pada dasarnya adalah langkah-langkah yang akan Anda ambil di GUI pada satu Server Windows. Mari bekerja dengan daftar singkat langkah-langkah yang dapat membantu Anda memulai yang dapat ditambahkan untuk konfigurasi lebih lanjut, jika diinginkan:

Impor sertifikat PFX dari berbagi jarak jauh

Buat penjilidan baru untuk https di IISALampirkan sertifikat yang diimpor ke penjilidan httpsPeriksa 'Memerlukan Kotak SSL di IIS ManagerTambahkan logging kustom untuk mengambil nilai X-Forwarded-For dari load balancer Sebagian besar langkah ini adalah klik langsung di GUI, jadi mengapa semua ini tidak dapat dilakukan dengan beberapa perintah PowerShell? Lebih baik lagi, menjalankan daftar beberapa server jarak jauh untuk melakukan tugas yang sama? Sebagian besar langkah yang akan ditunjukkan dalam posting ini adalah cuplikan kode yang dapat Anda masukkan ke dalam struktur PowerShell khas Anda. Anda mungkin memiliki logging kustom dan hal-hal yang unik untuk cara Anda men-debug skrip PowerShell. Jika tidak, Anda dapat dengan mudah menggabungkan ini bersama-sama untuk perputaran cepat dari apa yang perlu Anda selesaikan untuk konfigurasi IIS Anda. Beberapa hal untuk menyiapkan front Beberapa variabel diperlukan untuk memulai. Daftar server yang berfungsi untuk dikonfigurasi, dan jaringan yang dapat diakses berbagi tempat file sertifikat PFX berada: $Servers = Get-Content -Path C:WebServers.txt $CertFolder = `FileServer01SharedCerts` Ini akan mengambil daftar server dari file TXT dan menetapkan lokasi di mana sertifikat yang akan diimpor akan ditemukan. Jika Anda akan menjalankan ini terhadap beberapa server, Anda akhirnya ingin memastikan bahwa Anda bekerja di server yang sedang online. Berikut penggunaan cmdlet Test-Connection untuk melakukan ping ke setiap server setidaknya sekali untuk memastikannya hidup sebelum melanjutkan. Jika server online, logika akan menyalin folder dari jaringan berbagi yang berisi sertifikat ke folder C:WindowsTemp server jauh. Dengan cara ini cmdlet Invoke-Command untuk mengimpor sertifikat tidak akan mengalami masalah izin dalam menyalin dari lokasi jaringan: foreach ($Server in $Servers) { if (Koneksi Tes -Nama Komputer $Server -Tenang -Hitung 1) { Copy-Item -Path $CertFolder ` -Tujuan \$ServerC$WindowsTempCertAssets ` -Berulang -Force Write-Host "Aset berhasil disalin!" } if not { Write-Host "$Server tampaknya offline!" } } Perhatikan bahwa sebaiknya memberikan umpan balik ke konsol dengan baris Write-Host saat Anda menjalankan ini. Akan lebih baik untuk menambahkan ke log yang ada jika Anda membungkus skrip Anda dengan satu. Sekarang kita tahu server mana yang online dan asetnya disalin secara lokal. Kami sekarang siap untuk bergerak maju.

Impor sertifikat dan buat binding

baru Tindakan ini diselesaikan dengan cmdlet Invoke-Command yang akan menjalankan tindakan ini secara lokal di setiap server. Tergantung pada tingkat keamanan yang ingin Anda sertakan, Anda dapat melakukan beberapa hal dengan kata sandi yang diperlukan untuk mengimpor sertifikat PFX. Anda dapat menyimpannya dengan cepat menggunakan Get-Credential atau Anda bisa memasukkan kata sandi dalam teks biasa sesuai dengan perintah yang digunakan untuk mengimpor. Saya menyarankan untuk mengamankan kata sandi menggunakan Get-Credential minimal, meskipun ada banyak cara lain untuk memasukkan kata sandi dengan aman di sini. Untuk memanen kata sandi, Anda dapat menggunakan: $MyPwd = Get-Credential -UserName `Masukkan kata sandi di bawah` -Pesan `Masukkan kata sandi di bawah` Ini akan menyimpan kata sandi sertifikat tanpa harus memiliki kata sandi dalam teks biasa di dalam skrip Anda. Kami akan meneruskan variabel lokal ini ke dalam perintah jarak jauh dengan menggunakan komponen $Using:. Karena Invoke-Command dan blok skrip yang menyertainya berjalan dalam lingkup yang berbeda (lokal ke mesin jarak jauh), ia tidak mengetahui apa pun tentang variabel lokal apa pun yang ditentukan di luar blok skrip. Hal ini memungkinkan Anda untuk meneruskan variabel lokal apa pun ke dalam sesi jarak jauh dan menggunakannya sebagaimana mestinya. Kami akan mengimpor sertifikat ke penyimpanan sertifikat Pribadi (Saya) dari akun mesin. Kode berikut berjalan melalui langkah-langkah ini: Permulaan proses pada server jauhTindakan impor menggunakan kata sandi yang disediakan dari langkah Get-CredentialBuat pengikatan https pada port 443Menambahkan sertifikat yang diimpor ke pengikatan https*Ini masih termasuk dalam loop foreach yang ditentukan di atas: Invoke-Command -ComputerName $Server -ScriptBlock { $SiteName = "Situs Web Saya" Import-PfxCertificate -Password $Menggunakan:MyPwd.Password ` -CertStoreLocation Cert:LocalMachineMy ` -FilePath C:WindowsTempCertAssetsMyCert.pfx Impor-Modul WebAdministration New-WebBinding -Nama $SiteName -IP "*" -Port 443 -Protokol https $SSLCert = Get-ChildItem -Path Cert:LocalMachineMy ` | Where-Object {$_.Subject.Contains("CertFriendlyName")} $Binding = Get-WebBinding -Nama $SiteName -Protokol "https" $Binding.AddSslCertificate($SSLCert.GetCertHashString(), "Saya") Write-Host "Pengaturan berhasil pada: $env:COMPUTERNAME" } Di atas semua keluaran yang Anda paksa ke konsol sebagai bagian dari penyesuaian Anda sendiri, juga akan ada beberapa keluaran untuk tindakan mengimpor sertifikat setelah berhasil diimpor. Sebaiknya bersihkan juga kekacauan Anda, jadi tambahkan beberapa baris untuk menghapus folder dengan file .pfx di dalamnya yang disalin ke mesin. Ini akan berada di dalam loop foreach, sebaiknya menjelang akhir: Remove-Item -Path "\$ServerC$WindowstempCertAssets" -Recurse -Force Tulis-Host "Pembersihan di $Server selesai!"Memerlukan SSL di situs Anda Perintah berikut ini akan digunakan bagaimanapun Anda meluncurkan penerapan Anda. Jika Anda ingin ini segera diperlukan, buang saja dengan sisa kode di atas dan selesai. Anda mungkin memiliki peluncuran bertahap yang dapat menyebabkan Anda ingin mengaktifkan ini di server tertentu. Apa pun cara Anda membuat ini, inti dari pekerjaannya adalah beberapa baris ini: Import-Module WebAdministration Set-WebConfiguration -Lokasi "Situs Web Saya" ` -Filter `system.webserver/security/access` -Nilai "Ssl" Perhatikan bahwa parameter -Location adalah nama situs IIS yang Anda inginkan untuk memerlukan SSL. Ini sekarang akan memaksa semua koneksi aman ke penjilidan baru Anda dengan sertifikat terkait. Ini akan menjadi GUI yang setara dengan mengklik ikon Pengaturan SSL di IIS Manager untuk situs khusus Anda dan mencentang kotak Memerlukan SSL: Sesuaikan opsi pencatatan IIS Jika Anda mengelola armada server IIS yang berada di belakang penyeimbang beban, Anda dapat memanfaatkan informasi yang dikumpulkan oleh penyeimbang beban dari koneksi yang masuk. Dengan asumsi bahwa penyeimbang beban khusus Anda dikonfigurasi untuk menangkap nilai X-Forwarded-For, Anda dapat mengambil alamat IP masuk dari semua koneksi masuk ke server IIS Anda dan melihatnya di dalam log IIS yang terkenal. Ini sangat membantu saat memecahkan masalah apa pun di mana Anda perlu melacak koneksi dari sumber daya tertentu yang mungkin mengalami kesalahan pada server tertentu. Singkatnya, IIS tidak mengumpulkan nilai X-Forwarded-For. Itu harus diatur sebagai nilai khusus untuk diambil dan dicatat oleh IIS. Ada juga cara untuk mengatur ini di GUI, tetapi Anda dapat menambahkan perintah ini ke skrip penyediaan kami saat ini untuk menerapkannya dari awal: Add-WebConfigurationProperty -PSPath `MACHINE/WEBROOT/APPHOST` ` -Filter "system.applicationHost/sites/siteDefaults/logFile/customFields" ` -Nama "." ` -Nilai @{logFieldName=`X-Forwarded-For`;sourceName=`X-Forwarded-For`;sourceType=`RequestHeader`} Setelah selesai, Anda dapat memverifikasi bahwa bidang khusus ini telah ditambahkan ke IIS di tingkat server dengan membuka IIS Manager dan mengklik MyServer > Logging > Log File: Select Fields… Advertisement Setelah ini diterapkan, Anda akan dapat melihat alamat IP untuk koneksi masuk ke server IIS Anda di log IIS tradisional. Ini hanya beberapa contoh dari pengaturan yang dapat Anda konfigurasikan di server IIS Anda. Semakin banyak server yang Anda kelola dan diatur dengan cara yang sama, semakin banyak klik yang akan Anda hemat, yang selalu merupakan hal yang baik. Saya sarankan menguji perintah yang berbeda untuk pengaturan yang Anda inginkan terhadap satu server. Setelah Anda memiliki proses untuk server tunggal itu, itu dapat diulangi sebanyak yang Anda butuhkan dengan struktur yang diberikan di sini di posting ini. Ini seharusnya lebih dari cukup untuk membantu Anda mulai menghemat waktu dan menerapkan IIS yang lebih standar di lingkungan Anda. Itulah berita seputar Cara Menggunakan PowerShell untuk Mengonfigurasi IIS di Beberapa Server, semoga bermanfaat. Disadur dari HowToGeek.com.
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically