在 IIS 服务器上部署 SSL 证书,核心并不复杂:先准备包含私钥的 PFX/P12 证书,将证书导入 Windows 服务器,再把证书绑定到 IIS 网站的 HTTPS 443 端口。
如果一台服务器上部署了多个 HTTPS 网站,还需要根据实际情况配置 SNI。证书绑定完成后,先直接访问 https://域名 确认 HTTPS 正常,再配置 HTTP 到 HTTPS 的 301 跳转。
下面按照实际部署顺序说明 IIS 部署证书的方法。
一、IIS部署SSL证书前需要准备什么?
IIS 与 Nginx、Apache 的证书部署方式不太一样。
Linux 服务器上经常使用 .crt、.pem 和 .key 文件分别配置证书和私钥,而 IIS 更适合使用 PFX 或 P12 格式的证书文件。PFX 文件可以把服务器证书和私钥封装在一起,导入 Windows 证书库后,IIS 就可以直接调用。
因此,在开始部署之前,先确认手里的证书文件。
如果 CA 签发完成后直接下载证书,可以选择 IIS 或 PFX 格式,一般会得到:
.pfx或.p12:证书及私钥文件- PFX 文件密码:导入 IIS 时需要使用
如果目前只有:
example.com.crt
example.com.key
则需要先将证书和私钥转换为 PFX。
如果对 SSL 证书的类型、格式以及不同服务器环境还不熟悉,可以先查看 SSL证书类型怎么分? 和 SSL证书安装与部署。
有一点需要特别注意:**PFX 文件是否包含完整证书链,取决于生成或导出时的设置。**不要因为 PFX 能成功导入 IIS,就认为证书链一定完整。部署完成后仍然需要检查中间证书。
二、把PFX证书导入Windows服务器
准备好 PFX 文件以后,先不要急着配置网站绑定,第一步是把证书导入 Windows 服务器。
1. 打开 IIS 管理器
登录 Windows Server,按:
Win + R
输入:
inetmgr
回车打开 IIS 管理器。
如果服务器没有安装 IIS,这里不会出现 IIS 管理器,需要先通过“服务器管理器”安装 Web Server(IIS)角色。
2. 打开“服务器证书”
在 IIS 管理器左侧找到服务器名称,点击最顶层的服务器节点。
然后在中间的“功能视图”中找到:
服务器证书(Server Certificates)
双击进入。
3. 导入PFX证书
在右侧“操作”区域点击:
导入...
然后填写:
- 证书文件:选择
.pfx文件 - 密码:填写 PFX 文件对应密码
- 证书存储:选择“个人”
如果导入成功,证书列表中会显示证书的相关信息,包括颁发者、到期时间等。
这里建议顺便确认一下证书的域名。比如网站实际访问地址是:
www.example.com
那么证书的 SAN(Subject Alternative Name)中至少应该包含:
www.example.com
否则即使 IIS 绑定成功,浏览器访问时仍然会出现域名不匹配。
PFX导入失败怎么办?
如果确定密码没有输错,但 IIS 仍然提示密码错误、无法导入或无法解析 PFX,不一定真的是密码问题。
比较常见的情况是:PFX 使用了当前 Windows Server 不兼容的加密方式生成。
尤其是在旧版 Windows Server 环境中,从较新的 OpenSSL 版本导出的 PFX 可能出现兼容性问题。
这时候可以重新导出一个兼容旧系统的 PFX,例如采用 Legacy 模式或兼容性更高的加密算法,再重新导入。
三、在IIS中绑定SSL证书
证书进入 Windows 证书库以后,下一步才是让具体网站使用这张证书。
在 IIS 管理器左侧展开:
网站 → 找到目标网站
右键网站,选择:
编辑绑定...
在“网站绑定”窗口点击:
添加...
然后按照下面的方式填写。
| 配置项 | 设置 |
|---|---|
| 类型 | https |
| IP 地址 | 全部未分配,或指定服务器 IP |
| 端口 | 443 |
| 主机名 | 网站实际访问域名 |
| SSL 证书 | 选择刚才导入的证书 |
例如网站是:
www.example.com
那么可以配置为:
类型:HTTPS
IP地址:全部未分配
端口:443
主机名:www.example.com
SSL证书:选择对应证书
保存以后,这个 IIS 网站就建立了 HTTPS 绑定。
四、IIS绑定证书时,SNI到底要不要勾?
这是 IIS 部署 SSL 证书时比较容易遇到的一个问题。
SNI(Server Name Indication)主要解决一台服务器、同一个 IP 上部署多个 HTTPS 网站时的证书选择问题。
例如同一台 Windows Server 上同时运行:
www.example.com
www.example.net
shop.example.org
三个网站共用一个公网 IP。
这时候建议在 IIS 的 HTTPS 绑定中勾选:
需要服务器名称指示(SNI)
并分别填写对应的主机名。
例如:
站点A → www.example.com → 443 → SNI
站点B → www.example.net → 443 → SNI
站点C → shop.example.org → 443 → SNI
浏览器通过 HTTPS 连接服务器时,会在 TLS 握手阶段带上目标域名,IIS 再根据 SNI 找到对应的网站和证书。
什么情况下不需要SNI?
如果服务器只有一个 HTTPS 网站,而且一个 IP 只对应这一套 HTTPS 服务,SNI 并不是必须的。
所以不要把“部署 IIS 证书”简单理解成“必须勾 SNI”。
真正的判断标准是:同一个 IP 是否需要承载多个 HTTPS 站点。
五、证书绑定后,先直接测试HTTPS
证书绑定完成后,建议先做一件事:
直接访问 HTTPS,不要马上配置 301。
例如:
https://www.example.com
先确认网站本身能不能正常打开。
如果 HTTPS 正常,再考虑 HTTP → HTTPS 跳转。
这样排错会简单很多。
如果一上来就配置 301,一旦访问出现问题,很容易把“证书错误”“443 端口未开放”“跳转规则错误”混在一起。
重点检查这几个地方
第一,证书是不是正确的那一张。
打开浏览器证书详情,检查:
- 域名是否匹配
- SAN 是否包含当前域名
- 证书是否过期
- 颁发机构是否正确
第二,443端口是否开放。
Windows 防火墙以及云服务器安全组都需要允许 TCP 443。
如果服务器本机访问:
https://localhost
能够正常连接,但公网无法访问,需要重点检查防火墙、安全组、负载均衡或 CDN。
第三,证书链是否完整。
如果部分浏览器可以访问,某些手机、客户端或者老系统却提示证书不受信任,应该重点检查服务器返回的证书链。
遇到这类问题,可以参考 如何修复SSL证书错误?。
六、HTTPS正常后,再配置HTTP跳转HTTPS
确认:
https://www.example.com
可以正常访问以后,再把原来的 HTTP 流量跳转到 HTTPS。
IIS 环境比较常见的方式是使用 URL Rewrite。
安装 URL Rewrite 模块后,在网站功能中打开:
URL 重写 → 添加规则 → 空白规则
设置匹配条件。
URL 模式:
(.*)
添加条件:
条件输入:{HTTPS}
模式:^OFF$
操作选择:
重定向
目标 URL:
https://{HTTP_HOST}/{R:1}
重定向类型选择:
永久(301)
这样用户访问:
http://www.example.com/test
就会被跳转到:
https://www.example.com/test
路径和查询参数也能够保持。
如果网站原来长期使用 HTTP,涉及搜索引擎收录、Canonical、站内链接以及 301 传递,还需要按照完整的 HTTPS 改造流程处理,可以参考 网站如何从HTTP更改为HTTPS?。
七、IIS部署证书后,为什么还是提示“不安全”?
证书已经绑定成功,并不代表网站所有内容都已经变成 HTTPS。
一个比较典型的情况是:
网页本身:
https://www.example.com
但是网页里面引用了:
http://www.example.com/static/css/style.css
http://www.example.com/images/logo.png
这就是 **混合内容(Mixed Content)**。
浏览器会认为 HTTPS 页面中仍然存在明文 HTTP 资源,因此可能出现“不安全”、资源被拦截或者页面样式异常。
这种情况下,问题不在 IIS 证书绑定,而在网页代码或资源地址。
需要把站内资源改成:
https://www.example.com/static/css/style.css
或者使用相对路径:
/static/css/style.css
如果网站刚从 HTTP 切换到 HTTPS,这一项尤其值得检查。
八、IIS证书部署完成后,建议再检查这4项
真正上线之前,可以按照下面的顺序做一次检查:
1. 检查证书域名
确认主域名、www 域名以及其他业务子域名都被证书覆盖。
2. 检查证书有效期
确认新证书已经生效,没有继续调用旧证书。
3. 检查证书链
确认服务器能够向客户端提供完整的中间证书链。
4. 检查HTTP跳转
分别访问:
http://example.com
http://www.example.com
https://example.com
https://www.example.com
确认最终访问地址符合网站规划。
如果还涉及 CDN、负载均衡或 WAF,还要检查这些节点上的证书是否同步更新。
IIS部署SSL证书常见问题
IIS部署SSL证书一定要使用PFX吗?
IIS 最方便的方式是使用包含私钥的 PFX/P12 文件。因为 IIS 需要同时调用服务器证书和私钥完成 HTTPS 服务。
如果目前只有 .crt 和 .key,可以先将两者转换为 PFX,再导入 IIS。
一台IIS服务器可以部署多张SSL证书吗?
可以。
如果多个 HTTPS 网站使用不同域名,并且共用一个 IP,可以通过 SNI 将不同域名与对应证书绑定。
如果不同网站使用不同 IP,则可以直接通过 IP 和端口区分站点。
IIS证书已经绑定,为什么访问还是不通?
优先检查三个地方:
- TCP 443 是否开放;
- IIS HTTPS 绑定是否正确;
- 域名 DNS 是否解析到了当前服务器。
如果这三项都正常,再检查证书链、TLS 协议以及 CDN、负载均衡等中间设备。
更新IIS证书需要重启服务器吗?
一般不需要重启 Windows Server。
将新的 PFX 导入服务器后,在 IIS 网站的 HTTPS 绑定中选择新证书即可。若前面还有 CDN、WAF、负载均衡等 TLS 终止节点,则需要同步更新这些节点上的证书。
IIS可以使用免费SSL证书吗?
可以。
Let's Encrypt 等免费 CA 签发的 SSL/TLS 证书同样可以部署到 IIS。申请后可以转换为 PFX,或者使用支持 Windows/IIS 的 ACME 客户端自动完成证书申请、续期和绑定。
如果想了解免费证书的申请方式,可以查看 免费SSL证书是什么?怎么申请?。



京公网安备11010502031690号
网站经营企业工商营业执照
















