文档中心
IIS濡備綍閰嶇疆澶氫釜SSL璇佷功锛熶竴姝ユ鏁欎綘瀹炵幇澶氱珯鐐笻TTPS鍔犲瘑
时间 : 2025-09-27 16:19:35浏览量 : 2
为什么需要配置多个SSL证书?

在当今互联网环境中,HTTPS加密已经成为网站标配。作为Windows服务器管理员,你可能经常遇到这样的情况:一台IIS服务器上需要托管多个网站,每个网站都需要自己的SSL证书。比如:
- 公司官网使用example.com证书
- 客户门户使用client.example.com证书
- 电商平台使用shop.example.com证书
过去,由于技术限制和成本考虑,管理员可能会选择使用通配符证书(*.example.com)来覆盖所有子域名。但随着安全要求提高和Let's Encrypt等免费CA的出现,为每个站点单独配置SSL证书已成为更安全、更灵活的选择。
IIS支持多SSL证书的技术原理
IIS通过SNI(Server Name Indication)技术支持多SSL证书配置。简单来说:
当浏览器访问https://client.example.com时:
1. 浏览器会说:"我要访问client.example.com"
2. IIS检查请求的域名
3. 返回对应的SSL证书
4. 建立加密连接
这就像酒店前台根据客人报出的名字查找对应的房卡一样精准。
准备工作:获取并安装SSL证书
在开始配置前,你需要:
1. 获取SSL证书:
- 从CA(如DigiCert、Let's Encrypt)购买或申请免费证书
- CSR生成和验证过程(以Let's Encrypt为例):
```
certbot certonly --manual -d example.com -d www.example.com
2. 安装证书到服务器:
- 双击.pfx文件或使用MMC导入
- 确保证书出现在"个人"存储区
3. 检查端口占用:
- HTTPS默认使用443端口
- 执行`netstat -ano | findstr :443`查看端口占用情况
IIS配置多SSL证书详细步骤
第一步:绑定主机名和IP地址
1. 打开IIS管理器 → 选择站点 → "绑定"
2. 添加HTTPS绑定:
- IP地址:选择"全部未分配"或特定IP
- 端口:443(或自定义HTTPS端口)
- 主机名:填写完整域名(如client.example.com)
示例场景:
```
网站A: example.com → IP:192.168.1.100:443
网站B: client.example.com → IP:192.168.1.100:443
网站C: shop.example.com → IP:192.168.1.100:443
第二步:为每个站点分配对应证书
1. SSL设置中选择"需要SSL"
2. "客户端证书"选择"忽略"(除非需要双向认证)
3. HTTPS绑定中选择对应域名的证书:
实际操作示例:
为example.com选择DigiCert颁发的example_com.pfx
为client.example.com选择Let's Encrypt颁发的client_example_com.pfx
第三步:验证SNI支持情况
1. Windows Server版本检查:
- Server2008 R2及以上原生支持SNI
2. SSL测试工具验证:
```bash
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -text | grep "Subject Alternative Name"
预期输出应包含你的域名列表
常见问题排查指南
Q1:"此站点安全连接存在问题"错误
可能原因及解决方案:
1.时间不同步
```powershell
检查服务器时间是否准确
Get-Date
同步时间命令(需管理员权限)
w32tm /resync
```
2.中间证书缺失
```powershell
查看完整链是否安装正确
certmgr.msc → "中间CA机构"
3.客户端不支持SNI
- Windows XP/Android2.x等老旧系统不支持SNI
-解决方案:对这些用户提供HTTP回退或单独IP方案
Q2:"ERR_SSL_VERSION_OR_CIPHER_MISMATCH"
通常是因为协议/密码套件不匹配:
禁用不安全的协议(推荐设置)
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS1\.0\Server' Enabled '0'
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS1\.0\Client' Enabled '0'
Q3:如何验证哪个网站在响应请求?
使用curl工具测试(注意替换示例域名):
```bash
curl https://example.com --resolve example..com:443::127..0..0..1 --verbose
观察返回的服务器头部信息。
IIS多SSL最佳实践建议
根据笔者多年经验以下黄金法则:
1.命名规范
[年份]_[用途]_[域名].pfx
例:2025_Web_ExampleCom.pfx、2025_API_ClientExampleCom.pfx
2.自动续期策略(以Let's Encrypt为例)
创建续期脚本renew_certs.bat:
```batch
certbot renew --quiet --post-hook "net stop w3svc && net start w3svc"
3.监控与告警
推荐监控项:
- SSL到期时间(PowerShell命令):
Get-ChildItem Cert:\LocalMachine\My | Where { $_.NotAfter } | Sort NotAfter | Select Subject,NotAfter
- SNI功能状态(IIS日志分析):
检查cs-host字段是否与请求匹配
4.性能优化技巧
启用OCSP Stapling减少握手延迟:
```xml
5.安全加固措施
禁用弱密码套件:
Disable-TlsCipherSuite TLS_RSA_WITH_AES_256_CBC_SHA256
Disable-TlsCipherSuite TLS_RSA_WITH_AES_128_CBC_SHA256
HTTP/2与多域名的特殊考量
当启用HTTP/2时需注意:
1.ALPN协商问题
同一IP上所有HTTP/2站点必须使用相同TLS配置!否则会降级到HTTP/11!
解决方案示例:
将所有站点的TLS版本统一为TLS12+
统一密码套件顺序(SChannel设置)
IPv6环境下的特别处理
如果启用IPv6双栈环境:
查看IPv6绑定情况(管理员权限运行)
netsh http show sslcert
添加IPv6绑定示例:
netsh http add sslcert ipport=[[::]]:443 certhash=xxx appid={your-app-guid}
通过以上详细步骤和实战经验分享,相信你已经掌握了在IIS上配置多个SSL站点的全套方法。记住定期检查更新你的安全设置,保持服务器的防护能力与时俱进。
TAG:iis如何配置多个ssl证书,一个iis可以配几个ssl,iis ssl配置,iis部署ssl