I

IIS配置SSL证书及强制使用HTTPS设置教程

HB 网络 2021-06-19

在 Internet Information Services (IIS) 上配置 SSL 证书可以确保您的网站通过 HTTPS 协议安全地传输数据。以下是一个详细的步骤指南,帮助您完成 IIS 上的 SSL 证书配置。

前提条件
Windows 服务器:运行 IIS 的服务器(如 Windows Server 2012、2016 或 2019)。
SSL 证书:从可信的证书颁发机构 (CA) 获取的有效 SSL 证书文件(通常包括 .crt 文件和私钥文件,或 .pfx 文件)。
IIS 管理器:安装并配置好 IIS 管理工具。
步骤一:获取 SSL 证书
如果您还没有 SSL 证书,需要从可信的 CA 购买或申请一个免费的证书(例如 Let's Encrypt)。获得证书后,您通常会收到一个 .crt 文件和一个包含私钥的文件(可能是 .key 或 .pfx 格式)。

步骤二:导入 SSL 证书到 Windows 证书存储
打开“MMC”(Microsoft Management Console):

按 Win + R 打开运行窗口,输入 mmc 并按回车。
添加证书管理单元:

在 MMC 中,点击“文件” > “添加/删除管理单元”。

选择“证书”,然后点击“添加”。
选择“计算机帐户”,点击“下一步”,然后选择“本地计算机”,点击“完成”。
点击“确定”关闭对话框。

导入证书:

在左侧导航栏中展开“证书(本地计算机)” > “个人” > “证书”。
右键单击“证书”文件夹,选择“所有任务” > “导入”。
按照向导提示导入您的 .crt 文件或 .pfx 文件。如果是 .pfx 文件,系统会要求您输入密码(如果有的话)。
步骤三:绑定 SSL 证书到网站
打开 IIS 管理器:

按 Win + R 打开运行窗口,输入 inetmgr 并按回车。
选择网站:

在左侧的连接窗格中,找到并展开您的服务器名称,然后单击要配置 SSL 的网站。
编辑站点绑定:

在右侧的操作窗格中,双击“绑定...”。
在打开的窗口中,点击右侧的“添加...”按钮。
在“类型”下拉菜单中选择“https”。
在“SSL 证书”下拉菜单中,选择您刚刚导入的证书。
确保端口设置为 443(默认 HTTPS 端口),或者根据需要更改其他端口。
点击“确定”保存设置。
步骤四:测试 HTTPS 连接
打开浏览器:

使用支持 HTTPS 的任何现代网络浏览器。
访问您的网站:

输入 https://yourdomain.com(将 yourdomain.com 替换为您的网站域名)。
如果一切配置正确,您应该会看到浏览器的地址栏显示锁形图标,表示连接是安全的。

可选步骤:强制使用 HTTPS
http跳转https的重定向
为了确保所有用户都通过 HTTPS 连接到您的网站,您可以配置 URL 重写规则来自动重定向 HTTP 请求到 HTTPS。

安装 URL 重写模块(如果尚未安装):

下载地址:
https://www.iis.net/downloads/microsoft/url-rewrite

下载 URL Rewrite 安装工具 rewrite_amd64_zh-CN.msi

在 IIS 管理器中,转到服务器级别,双击“角色和功能”。
按照向导添加“URL 重写”模块。安装完成后重新打开IIS,在部署的网站主页会多出一个“URL重写”的功能模块。

http 强制跳转 https

这里推荐使用 Web Platform Installer 安装2.0版本:

Web.Config 配置

打开项目的 Web.Config 配置文件,在 <system.webServer> 中,配置如下重定向代码:

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
    </rule>
  </rules>
</rewrite>

如果需要开启HSTS请用以下代码,首次访问不用https,但之后都会强制使用了,所以建议开启:

      <rules>
            <rule name="redirect to HTTPS" enabled="true" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
                redirectType="Permanent" />
            </rule>
        </rules>
        <outboundRules>
            <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
                <match serverVariable="RESPONSE_Strict_Transport_Security"
                    pattern=".*" />
                <conditions>
                    <add input="{HTTPS}" pattern="on" ignoreCase="true" />
                </conditions>
                <action type="Rewrite" value="max-age=31536000" />
            </rule>
        </outboundRules>

上面的代码片段的实现都是依赖于在IIS(Internet Information Services)服务器上安装了URL Rewrite扩展。安装了这一扩展后,IIS便具备了根据定义的规则自动将HTTP协议的访问请求重定向到HTTPS协议的能力。简而言之,当用户尝试通过HTTP协议访问网站时,IIS会根据上面配置的URL重写规则,自动将该请求重定向到HTTPS协议,从而确保数据传输的安全性。

通过上述步骤,您应该已经成功地在 IIS 上配置了 SSL 证书,并且确保了网站的安全通信。如果遇到任何问题,请检查证书是否已正确导入以及 IIS 日志以获取更多调试信息。

PREV
Typecho 如何开启伪静态?
NEXT
TCP和UDP核心区别,快速搞懂这两大协议!