پرش به محتوا

وب‌سرور IIS: نصب، سایت و HTTPS

نقش IIS را نصب کنید، یک سایت با Application Pool جداگانه بسازید، binding برای HTTPS تعریف کنید و اطلاعات نسخه را از هدرها حذف کنید.

Windows Server 2019سطح: مقدماتیبرای: Windows Server 2025، Windows Server 2022، Windows Server 2019به‌روزرسانی: ۱۶ آبان ۱۴۰۵

۱. نصب

powershell
Install-WindowsFeature Web-Server, Web-Asp-Net45, Web-Mgmt-Console, Web-Http-Redirect -IncludeManagementTools
Import-Module WebAdministration

۲. سایت و Application Pool

هر سایت pool جداگانه داشته باشد تا خرابی یا نفوذ به یک سایت روی بقیه اثر نگذارد:

powershell
New-Item -ItemType Directory -Path C:\inetpub\portal
Set-Content C:\inetpub\portal\index.html "<h1>Portal</h1>"
New-WebAppPool -Name PortalPool
New-Website -Name Portal -PhysicalPath C:\inetpub\portal -ApplicationPool PortalPool -HostHeader portal.corp.sahor.ir -Port 80
Get-Website

۳. HTTPS

گواهی را (مثلاً فایل PFX صادرشده از CA سازمان) وارد کنید و به سایت متصل کنید:

powershell
$pwd = Read-Host -AsSecureString "PFX password"
$cert = Import-PfxCertificate -FilePath C:\certs\portal.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $pwd
New-WebBinding -Name Portal -Protocol https -Port 443 -HostHeader portal.corp.sahor.ir -SslFlags 1
(Get-WebBinding -Name Portal -Protocol https).AddSslCertificate($cert.Thumbprint, "My")

SslFlags 1 یعنی SNI فعال است و چند سایت HTTPS می‌توانند روی یک IP باشند.

۴. انتقال HTTP به HTTPS

با ماژول URL Rewrite (جداگانه از سایت مایکروسافت نصب می‌شود) یک قانون redirect در web.config سایت تعریف کنید، یا ساده‌تر: binding پورت 80 را فقط برای redirect نگه دارید.

۵. حذف هدرهای اطلاعاتی

powershell
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/security/requestFiltering' -Name removeServerHeader -Value $true
Remove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/httpProtocol/customHeaders' -Name . -AtElement @{name='X-Powered-By'}

۶. لاگ‌ها

لاگ‌های دسترسی در C:\inetpub\logs\LogFiles\W3SVC<id> ذخیره می‌شوند. شناسه‌ی سایت:

powershell
(Get-Website -Name Portal).Id