IIS 7 并不支持为不同域名绑定不同的证书。解决方法就只有两个了,一是升级 IIS 8,二是重新申请一个通配的泛域名 SSL 证书。

升级 IIS 8 也不是一件简单事,因为目前的 IIS 7 是在 Windows Server 2008 R2 Enterprise 上面跑的,如果想升级到 IIS 8,则需要把服务器也升级到 Windows Server 2012,这相当于重装服务器的系统。

通配泛域名 SSL 证书在阿里云上的定价也不便宜。

阿里云通配证书报价

于是抱着试一试的心态找了找免费的证书颁发机构,结果有心栽花花不开,无心插柳柳成荫,还真让我找到了一个。

Let's Encrypt

Let's Encrypt

Let's Encrypt』是国外一个公共的免费 SSL 项目,由 ISRG 联手组成证书颁发机构,可以签发免费 SSL/TLS 证书。ISRG(Internet Security Research Group,互联网安全研究小组)是一个关注网络安全的公益组织,其赞助商从非商业组织到财富 100 强公司都有,包括 Mozilla、Akamai、Cisco、Facebook、University of Michigan 等等。

Let's Encrypt』是为普及 HTTPS 而发起的,它推动了基础 DV SSL 证书的普及。其证书已经被 Mozilla、Google、Microsoft 和 Apple 等主流浏览器支持,只需要 Web 服务器配置好 HTTPS 证书,浏览器会在加载时验证 Web 服务器 HTTPS 证书是否有效。随着 HTTPS 的普及,『Let's Encrypt』目前已成为全球最受欢迎的免费 SSL 证书签发机构。

Let's Encrypt』的优点有两个:完全免费,避免 ISP 劫持;申请速度快、无需注册账户。

但是有两点也需要注意:

  • Let's Encrypt』的基础 DV SSL 证书,只提供了数据加密,不验证身份,无法向用户证明网站的所有者。但即使这样也满足了基本需要了。
  • Let's Encrypt』一次只会颁发 3 个月有效期的证书,到期之后需要自己再续上(仍然是免费的)。

既然有了可以免费使用的 SSL 申请机构,那就申请这个免费的泛域名 SSL 证书吧。

Let's Encrypt 官网首页

Cerbot

Let's Encrypt』官网引导我们进入『Certbot』进行操作。

Certbot 官网首页

不过十分尴尬的是,我看了半天不知如何下手,然后上网查了一圈发现,大神们都是用代码命令来完成这个繁琐的操作的,让我望而却步。

Certify

绝望中又找到了一个可以获取『Let's Encrypt』免费 SSL 证书的软件 —— 『Certify』。

Certify

Certify』是一个可以自动续订『Let's Encrypt』颁发证书的第三方 GUI 软件,使用它可以自动配置、创建和自动续订证书,并且到快要续订的时候会自动发邮件通知我们。

看到没看到没?它说 GUI!图形用户界面!简直小白福音了好吗?

首先将『Certify』下载到服务器上并安装,注意其依赖 Microsoft .NET Framework 4.5,安装时可能会收到相关提示。

第一次启动程序时会弹出对话框让我们填写个邮箱地址,等证书快要过期的时候我们会收到续订证书的提醒邮件。

新建联系方式

然后进到主界面点击左上角的「新建证书」,在「Certificate Domains」中,『Certify』会自动扫描 IIS 中的站点,选择我们要申请证书的域名,在「添加域名」一栏中填写泛域名,即「*.free.com」。

填写泛域名

点击「ADD DOMAINS」,然后『Certify』就会弹出以下提示:

提示框
添加子域名提示框

点击确定后,就可以看到下方「要包含的域名或子域名」中出现了「*.free.com」和「free.com」。

要包含的域名或子域名

然后点击右方「Authorization」中修改「Authorization Settings」中的「验证类型」为「dns-01」,并选择「DNS Update Method」为「(Update DNS Manually))」。

Update DNS Manually

这一步我本来想选的是「Aliyun (Alibaba Cloud) DNS API」,因为阿里云毕竟在国内,升级的话总会方便一点,但是发现选择这一项后它要求我填写「DNS Zone Id」,由于不知道这一项怎么填写,所以我还是选了「(Update DNS Manually)」。

Aliyun DNS API

然后就可以点击「请求证书」了。

正在申请证书

但是,可能会发现遇到 Pause 的情况,这时候就会收到邮件,域名解析需要添加两条 TXT 记录,收到邮件后在阿里云管理控制台中填上去了再次请求证书,就通过了。

待其执行完毕后,返回『Certify』的首页面可以看到站站点已经成功使用了『Let's Encrypt』的证书了。

成功绑定证书

这时候打开『Internet信息服务(IIS)管理器』就会发现,『Certify』已经自动帮我们绑定好证书了,真是太人性化了,最后再打开 HTTPS 的网站查看一下,正常打开,完美。

SSL For Free

不想下载软件的可以尝试一下『SSL For Free』这个网站,它也是一个可以获取『Let's Encrypt』免费 SSL 证书的网站。

SSL For Free

虽然是全英文的网站,但『SSL For Free』这个网站对于小白的我来说已经是非常友好了,首先填写好泛域名,比如我要申请几个类似「*.free.com」的域名,则需要在上方填写「free.com *.free.com」,即需要在输入框输入根域名空格再输入“*.域名”。

Undate DNS Records

与上面步骤类似,域名解析需要添加两条 TXT 记录,进入阿里云管理控制台添加即可。

Something Else...

  • 证书需要推送到「负载均衡(SBL)」中,在阿里云的管理控制台中将其推送即可。
云产品推送 - 负载均衡
  • 在 Windows「运行」中输入 mstsc 可远程连接服务器桌面。
远程连接命令
  • 在 Windows 服务器「运行」中输入 iisreset /stop 以停止 IIS 服务。

  • 在 Windows 服务器「运行」中输入 iisreset /start 以启动 IIS 服务。