[点晴永久免费OA]Windows Server 的 IIS 使用 Let's Encrypt 免费 SSL 证书启用 HTTPS 的详细教程,基于 win-acme 工具(当前最稳定且支持自动续期的方案)
|
admin
2025年7月31日 21:24
本文热度 5803
|
以下是在 Windows Server 的 IIS 上使用 Let's Encrypt 免费 SSL 证书启用 HTTPS 的详细教程,基于 win-acme 工具(当前最稳定且支持自动续期的方案):
📦 一、前期准备
1、确保环境满足
Windows Server 2012 R2 或更高版本(支持 IIS 8+)。
IIS 已安装且站点正常运行(HTTP 可访问)。
域名解析已指向当前服务器 IP(如 www.oa22.cn)。
2、安装必要组件
⬇️ 二、下载并安装 win-acme
1、下载最新版本
2、以管理员身份运行
🔐 三、申请并安装 Let's Encrypt 证书
1、启动向导
2、选择域名绑定方式
3、域名验证方式
4、输入联系人邮箱
5、同意服务条款
6、自动应用证书
⚙️ 四、配置 IIS 强制跳转 HTTPS
1、启用 URL 重写规则
2、添加重定向规则
点击 “添加规则” → 选择 “空白规则”,配置如下(.xml):
<!-- 示例:Web.config 中的规则 -->
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://www.oa22.cn/{R:1}" redirectType="Permanent" />
</rule>
🔁 五、配置证书自动续期
✔️ 六、验证 HTTPS 访问
1、浏览器测试
访问 https://www.oa22.cn,确认地址栏显示 🔒 锁图标(无警告)。
2、SSL 证书检测
使用 SSL Labs 测试工具 扫描域名,检查评级是否为 A 或 A+。
⚠️ 常见问题解决
证书绑定失败:检查 IIS 站点绑定中是否已存在 HTTPS 绑定(删除冲突绑定)。
HTTP 验证失败:确保网站根目录(如 C:\inetpub\wwwroot)有写入权限,或手动创建验证文件。
防火墙阻塞:开放服务器 80(HTTP 验证) 和 443(HTTPS) 端口。
💎 总结
通过 win-acme 工具,Let's Encrypt 证书的申请、安装、续期均可自动化完成,全程约 5 分钟。此方案无需购买证书、支持通配符(需 DNS 验证),且符合主流浏览器信任标准。若需进一步优化(如 HSTS 配置),可参考 win-acme 官方文档。
该文章在 2025/8/25 12:58:26 编辑过
| |
全部评论1 |
|
admin
2025年7月31日 21:37
如果这个网站有多个域名,可以按照以下方法设置多域名https访问支持。
为你的多域名网站配置HTTPS访问,本质是让多个域名共享同一个站点内容并支持HTTPS协议。以下是三种可行方案(按推荐度排序),均基于你已有的SSL证书(需覆盖所有域名):
🔧 方案一:修改IIS配置文件添加主机头绑定(适用IIS 7/8/10,推荐首选)这是最稳定的方法,通过直接修改IIS核心配置文件,为每个域名添加独立的HTTPS绑定。操作步骤:1、定位配置文件
打开路径 C:\Windows\System32\inetsrv\config\applicationHost.config。
⚠️ 备份此文件(复制到桌面再编辑),避免误操作导致IIS崩溃。
2、编辑站点绑定配置
在文件中搜索你的站点名称(如 name=Default Web Site),找到 <bindings> 节点。
在现有HTTP绑定的基础上,为每个域名添加一行HTTPS绑定,例如:
<bindings>
<!-- 原有HTTP绑定 -->
<binding protocol=http bindingInformation=*:80: />
<!-- 新增HTTPS绑定(每个域名一行) -->
<binding protocol=https bindingInformation=*:443:www.domain1.com />
<binding protocol=https bindingInformation=*:443:www.domain2.com />
<binding protocol=https bindingInformation=*:443:www.domain3.com />
</bindings>将 www.domain1.com 等替换为你的实际域名。3、覆盖配置文件并刷新IIS
将修改后的文件覆盖回原路径,在IIS管理器中右键站点 → 选择“重新启动”(仅重启站点,勿重启整个IIS服务)。注意事项:证书匹配:确保你的SSL证书覆盖所有域名(如多域名证书/SAN证书或通配符证书)。端口冲突:若其他站点已占用443端口,需先解除冲突。🌐 方案二:使用通配符证书 + 主机头绑定(适合拥有 *.example.com 证书)若你的域名属于同一主域(如 a.example.com、b.example.com),且持有通配符证书(*.example.com),可简化操作:
1、导入通配符证书
通过IIS管理器或MMC控制台导入证书。
2、绑定证书时启用主机名IIS 8+:直接在绑定界面输入主机名(如 a.example.com)。IIS 7:需修改证书“友好名称”为 *.example.com,欺骗IIS识别为通配符证书,即可解锁主机名输入框。3、为每个域名重复绑定操作
在同一个站点下添加多条HTTPS绑定,每条对应一个子域名。⌨️ 方案三:命令行添加主机头绑定(适合批量操作或脚本管理)通过IIS管理脚本 adsutil.vbs 动态添加绑定,无需编辑配置文件:
1、查询站点标识符
打开IIS → 点击站点 → 右侧“高级设置” → 记录标识符。
2、执行绑定命令
以管理员身份运行CMD,执行(替换 [站点ID] 和 [域名]):
cscript C:\inetpub\AdminScripts\adsutil.vbs set /w3svc/[站点ID]/SecureBindings :443:[域名]示例:
cscript C:\inetpub\AdminScripts\adsutil.vbs set /w3svc/3/SecureBindings :443:www.domain1.com
cscript C:\inetpub\AdminScripts\adsutil.vbs set /w3svc/3/SecureBindings :443:www.domain2.com3、重启站点生效
在IIS中重启站点即可。⚠️ 关键注意事项1、证书有效性若证书不包含某域名,用户访问时将看到证书错误警告(即使配置正确)。解决方案:申请覆盖所有域名的多域名证书(SAN证书)或通配符证书。2、IIS版本差异IIS 7:必须通过修改配置或命令行添加主机头(界面不支持)。IIS 8+:支持SNI(Server Name Indication),可直接在绑定界面输入主机名。3、避免配置覆盖切勿重启IIS服务(iisreset)!仅重启站点。否则可能重置 applicationHost.config 文件。💎 最终建议首选方案一(修改配置文件):稳定可靠,一次配置永久生效,适合任何IIS版本。若域名变更频繁 → 用方案三(命令行脚本),便于批量管理。升级到IIS 8+并购买通配符证书 → 长期维护成本最低。执行后,使用 https://每个域名 测试访问,若遇证书错误,检查证书覆盖范围;若访问失败,检查防火墙是否开放443端口。
该评论在 2025/8/25 12:04:43 编辑过
|