安装IIS时排除非必要组件
通过服务器管理器操作:添加角色和功能 → 基于角色的 → 您的服务器 → Web服务器(IIS)。
为静态简单网站选择最小配置:
- Web服务器 → 通用HTTP功能:静态内容、默认文档、HTTP错误;
- 完整性与诊断:HTTP日志记录;
- 安全性:请求过滤;
- 性能:静态内容压缩。
若需使用ASP.NET,请添加应用程序开发(可扩展.NET、ASP.NET、ISAPI)。
对应的PowerShell命令:
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# If necessary:
# Install-WindowsFeature Web-Asp-Net45, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter
请访问 http://localhost:应显示 IIS 的登录页面。
直接在 IIS 中生成 CSR(证书签名请求)
打开 IIS 管理器(InetMgr.exe)→ 选择您的服务器 → 服务器证书。
在操作中,点击创建证书请求…并填写别名对应的字段:
— 通用名称 — 网站的完全合格域名(例如 example.ru 或通配符 *.example.ru);
— 组织/OU/城市/州/国家 — 根据证书颁发机构(CA)的要求填写。
选择加密提供商和密钥长度(推荐使用Microsoft RSA SChannel和2048+位)。
将CSR保存为文件;该文件以—–BEGIN NEW CERTIFICATE REQUEST—–开头。
将CSR发送至您的证书颁发机构(商业机构或企业内部机构)。若使用AD CS,请从证书颁发机构的门户网站下载已签发的证书。
测试替代方案:通过PowerShell New-SelfSignedCertificate生成自签名证书。适用于测试环境,但不适用于生产环境。
在IIS中导入证书(CER/PFX)及格式细节
返回服务器证书,点击完成证书请求…:指定已签发的CER文件。
若您拥有CRT + KEY文件,请先将其转换为PFX格式(一种包含私钥的组合容器)。最简便的方法是使用openssl工具:
openssl pkcs12 -export -out target.pfx -inkey source.key -in source.crt
或通过「导出」功能在Windows中直接将CRT→CER(Base-64 X.509)临时转换:
若需导入PFX文件,建议通过证书(本地计算机)→ 个人插件进行操作。微软在其官方文档中提供了关于如何导入并分配站点证书的详细说明。
完成证书申请后,新证书将显示在列表中:
将HTTPS链接到网站(链接)
前往网站,选择网站 → 编辑链接…
添加链接:
- 类型:HTTPS
- IP地址:所有未分配(或特定)地址
- 端口:443
- 主机名:您网站的完全合格域名(FQDN)
- SSL证书:选择已导入的证书
若需在单个IP地址上托管多个HTTPS网站,请启用SNI(要求服务器名称指示)。
重新启动网站(或整个IIS)。
请在浏览器中确认:该域名的锁形图标和有效证书。
建议立即启用HTTP→HTTPS重定向(URL重写);winitpro平台上已提供关于此主题的独立分析。
打开端口并进行外部测试
请务必在Windows内部防火墙及Windows VPS供应商的外部防火墙/ACL中打开80/443端口:
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
客户端计算机验证:
Test-NetConnection example.ru -Port 80
Test-NetConnection example.ru -Port 443
TcpTestSucceeded: True – 连接和可用性已确认。
常见错误及快速解决方案
- 证书未出现在“连接”下拉列表中:该证书被导入至“当前用户”而非“本地计算机 → 个人”目录,或缺少私钥。请将PFX文件导入至“本地计算机”。
- NET::ERR_CERT_COMMON_NAME_INVALID:CN/SAN 与主机名中的域名不匹配;请使用正确的 FQDN 重新提交。
- 仅能打开 HTTP:外部防火墙未关闭 HTTPS 或 443 端口。
- 导入 CRT 失败:请转换为 CER 或 PFX 格式(参见上文)。
- 单一IP地址托管多个网站:请在链接中启用SNI并使用不同主机名。
快速指南:几分钟内完成IIS+网站+HTTPS配置
# 1) Installing IIS with basic modules
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# 2) Site catalog
New-Item -ItemType Directory -Path "D:\sites\example.ru\wwwroot" -Force | Out-Null
# 3) Website on HTTP
Import-Module WebAdministration
New-Website -Name "example.ru" -Port 80 -PhysicalPath "D:\sites\example.ru\wwwroot" -IPAddress "*" -HostHeader "example.ru"
# 4) Import certificate (example for PFX; specify your path/password)
# $pwd = ConvertTo-SecureString "PFXpassword" -AsPlainText -Force
# Import-PfxCertificate -FilePath "C:\certs\example.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $pwd
# $thumb = (Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*CN=example.ru*"}).Thumbprint
# 5) HTTPS binding (via netsh http)
# New-WebBinding -Name "example.ru" -Protocol https -Port 443 -HostHeader "example.ru"
# netsh http add sslcert hostnameport=example.ru:443 certhash=$thumb appid="{00112233-4455-6677-8899-AABBCCDDEEFF}"
# 6) Firewall
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow