如何在Windows机器上生成适用于IIS的SSL证书?
如何在Windows机器上生成适用于IIS的SSL证书?
作为同样折腾过从Nginx转IIS的过来人,我太懂你找不到Certbot IIS指南的困惑了!别担心,咱们有几个靠谱的办法能搞定Let's Encrypt证书在IIS上的部署,下面一步步给你说:
方法一:用Win-acme(推荐,专为Windows/IIS设计)
这是Windows上最流行的ACME协议客户端,对IIS的支持非常友好,不仅能自动生成证书,还能直接绑定到你的IIS站点,甚至帮你设置自动续期,完全不用手动操心后续维护。步骤如下:
- 先去官方渠道下载最新的Win-acme安装包,解压到你方便的目录
- 双击解压后的
wacs.exe启动命令行交互界面 - 跟着提示一步步操作:
- 首先选择「Create new certificate」(创建新证书)选项
- 接下来它会自动列出当前IIS里的所有站点,直接输入对应站点的编号即可
- 验证方式选「Http-01」(这是最通用的验证方式,不需要额外配置服务器端口)
- 后续按照提示确认域名、证书输出路径等信息,完成后它会自动生成证书并安装到IIS中,同时创建Windows定时任务负责证书自动续期
- 搞定后你可以打开IIS管理器,进入站点的「编辑绑定」页面,就能看到已经自动添加好的HTTPS绑定了
方法二:用Certbot手动模式(如果你坚持用Certbot)
因为Certbot官方没有针对IIS开发专用插件,所以只能通过手动验证的方式生成证书,之后再手动导入到IIS中:
- 安装Certbot:
- 打开管理员权限的PowerShell,运行命令:
winget install certbot(如果你的系统装了winget包管理器);也可以直接下载Certbot的Windows安装包进行安装
- 打开管理员权限的PowerShell,运行命令:
- 生成证书:
- 在PowerShell中运行命令:
certbot certonly --manual - 按照提示输入你的域名(比如
example.com) - 接下来Certbot会给出一段验证信息:要求你在站点根目录下创建
.well-known/acme-challenge文件夹,然后在该文件夹内新建一个无后缀的文本文件,文件名是指定的字符串,文件内容也是指定的字符串 - 完成文件创建后,先在浏览器里访问这个文件的URL,确认能正常打开并显示正确内容,再回到Certbot按回车继续
- 验证通过后,Certbot会生成证书,默认存放在
C:\Certbot\live\你的域名目录下,包含fullchain.pem(证书链)和privkey.pem(私钥)两个文件
- 在PowerShell中运行命令:
- 导入到IIS:
- 打开IIS管理器,找到目标站点,右键选择「编辑绑定」
- 点击「添加」,类型选「HTTPS」,端口填443,然后点击「SSL证书」后的「导入」按钮
- 如果IIS不支持直接导入PEM格式文件,可以用OpenSSL把证书转换成PFX格式:运行命令
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in fullchain.pem,设置一个导出密码 - 选择转换好的PFX文件,输入密码后完成导入,最后在绑定中选择这个证书即可
- 注意:手动模式不会自动续期证书,你需要自己创建Windows定时任务,定期运行
certbot renew命令,之后再重新导入更新后的证书到IIS
方法三:用IIS自带的证书管理器(仅限测试场景)
如果只是内部测试用,IIS自带的工具可以生成自签名证书,但这种证书会被浏览器标记为“不安全”,绝对不适合公网站点使用:
- 打开IIS管理器,点击左侧的服务器名称,然后双击中间面板的「服务器证书」
- 在右侧操作栏选择「创建自签名证书」,输入证书名称,选择存储位置后点击确定
- 回到站点的「编辑绑定」页面,添加HTTPS绑定并选择这个自签名证书即可
备注:内容来源于stack exchange,提问作者variable




