ssl新闻资讯

文档中心

IIS濡備綍閰嶇疆澶氫釜SSL璇佷功锛熶竴姝ユ鏁欎綘瀹炵幇澶氱珯鐐笻TTPS鍔犲瘑

时间 : 2025-09-27 16:19:35浏览量 : 2

为什么需要配置多个SSL证书?

2IIS濡備綍閰嶇疆澶氫釜SSL璇佷功锛熶竴姝ユ鏁欎綘瀹炵幇澶氱珯鐐笻TTPS鍔犲瘑

在当今互联网环境中,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