Saya mencoba untuk mengontrol binding dalam aplikasi IIS menggunakan PowerShell. Saya ingin membuat situs yang mengikat http dan https menggunakan skrip.
Inilah yang saya miliki sejauh ini:
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$hostname,
[Parameter(Mandatory=$True,Position=2)]
[string]$installPath,
[Parameter(Mandatory=$False,Position=3)]
[string]$ip
)
Import-Module WebAdministration
$appPoolName = $hostname + 'Pool'
$port = 80
$hostRecord = $hostname+'.example.com'
$bindings = @{protocol="http";bindingInformation=$ip + ":"+ $port + ":" + $hostRecord}
New-Item IIS:\AppPools\$appPoolName
Set-ItemProperty IIS:\AppPools\$appPoolName managedRuntimeVersion v4.0
New-Item IIS:\Sites\$hostname -Bindings $bindings -PhysicalPath $installPath
Set-ItemProperty IIS:\Sites\$hostname -Name applicationPool -Value $appPoolName
Bagaimana cara menambahkan binding ke $bindings
variabel saya / menggunakan beberapa mekanisme lain untuk mencapai tujuan saya?
powershell
Khanzor
sumber
sumber
Saya telah melalui proses mencoba untuk menambahkan https mengikat ke situs dan itu bisa sangat menyakitkan. Ada banyak cara untuk mencapai setiap langkah dan masing-masing memiliki jebakan. Saya meninggalkan solusi terakhir dengan harapan seseorang akan merasakan manfaatnya.
Solusi ini mengasumsikan bahwa Anda telah menginstal IIS dan situs web yang ditentukan. Hubungi situs sample.contoso.com untuk keperluan posting ini. Asumsikan Anda memiliki sertifikat dalam file sample.contoso.com.pfx yang juga ingin Anda gunakan.
Langkah pertama adalah mengimpor sertifikat dari file.
Akan lebih baik jika itu sudah cukup. Dan dalam beberapa kasus mungkin. Namun, bagi saya, ini meninggalkan sertifikat tanpa akses yang tepat ke kunci pribadi. Ini menyebabkan kesalahan powershell "Sesi masuk yang ditentukan tidak ada. Mungkin sudah dihentikan" ketika saya pergi untuk menambahkan sertifikat ke penjilidan (lihat langkah itu nanti). Jadi, langkah selanjutnya adalah memperbaiki ACL untuk kunci privat.
Ini akan memungkinkan sistem lokal untuk memiliki akses penuh ke kunci pribadi jika itu tidak diwarisi dari folder yang berisi.
Jika Anda ingin mendapatkan sertifikat yang sudah diinstal, Anda memerlukan hash untuk itu dan dapat mengambilnya dengan Get-Item seperti:
Langkah selanjutnya adalah membuat ikatan.
Penting untuk dicatat bahwa "https" adalah case-sensitive. Jika Anda menggunakan "HTTPS" sebagai gantinya, Anda mendapatkan hasil pengikatan yang sangat berbeda.
Ikatan ini belum memiliki sertifikat, jadi langkah terakhir adalah melampirkan sertifikat. Jika sertifikat dipercaya dengan benar dan keamanannya benar, langkah ini harus berhasil. Itu bisa menjadi rewel jika ada masalah dengan sertifikat sekalipun.
Jika ini gagal dengan pesan tentang sesi masuk tidak ada, maka sertifikat mungkin memiliki beberapa masalah. Tinjau penampil acara untuk detail lebih lanjut. Selama upaya saya, saya menemukan peristiwa 5061 di log keamanan. Ketika gagal, itu menunjukkan bahwa OpenKey gagal dengan 80090016 (The Keyset Tidak Ada). Dan kegagalannya adalah karena SISTEM tidak memiliki akses ke kunci pribadi.
Itu cukup bagi saya untuk membuat ikatan https. Ikatan http adalah produk sampingan dari menggunakan cmdlet New-WebSite. Jika tidak datang secara gratis, saya tidak menemukan membuat port 80 yang mengikat dengan cmdlet New-WebBinding menjadi tantangan.
sumber
Saya pikir apa yang Anda kejar adalah sebagai berikut:
Pada dasarnya Anda harus memasukkan serangkaian ikatan. Informasi lebih lanjut di sini - ( http://blogs.iis.net/jeonghwan/iis-powershell-user-guide-comparing-representative-iis-ui-tasks )
(Edit: Memperbaiki kesalahan ketik dalam array sintaks - koma asing)
sumber