前言:
微信需要ssl证书,很多网站都有免费一年的证书;免费一年的证书叫做单域名证书,iis没办法配置多个子站点443端口;我有很多客户需要用我的的域名,同一个域名配置多个ssl,或者支持多个子域名;同一台服务器同一个iis使用单域名是无法做到的,因此 我们需要统配域名来;
简要说明:
相信很多人都已经了解 Let's Encrypt 了。它得到了广泛的支持。考虑到 StartSSL 和沃通的 SSL 证书开始不被信任,Let's Encrypt 几乎成了免费 SSL 证书唯一的选择。然而对于许多人来说,申请 Let's Encrypt 提供的免费 SSL 证书有着或多或少的困难。这里就介绍一个在线的工具,名字叫作 ZeroSSL。
在线的工具就有这样的好处:不用下载客户端,并且是图形界面的,对新手来说也容易上手。美中不足的是,ZeroSSL 是英文的;因此下面我将稍微详细地介绍全过程。
首先,进入 ZeroSSL 的免费证书向导。
在左边写着“Email”的文本框中填写自己的邮箱地址。其实不填邮箱也可以,但是填了可以收到证书过期提醒什么的。如果自己没有生成 CSR,就在右边写着“domains”的框中填写自己的域名,多个域名用空格或者英文逗号隔开。注意,在这里带“www.”和不带的都要填,虽然没填它也会提醒。支持多域名是这个 ZeroSSL 的一个优点,别的许多 Let's Encrypt SSL 证书申请工具都不支持多个域名。如果已经有现成的 CSR 了,就在 domains 下面那个大框中输入 CSR 的内容,这里是允许填自己生成的 CSR 的;按理来说确实是自己生成的安全一些(比如在自己服务器上用 OpenSSL),而不是在线工具的。
勾选两个“Accept”之前的单选框,意思是同意两个条款。在左半边还有两个框,是问你用 DNS 还是 HTTP(网页)验证,我们以 DNS 验证为例,点击 DNS verification。
点击右上角的“NEXT”(下一步)按钮,没问题的话系统就会开始生成 CSR,稍微要一点时间;生成好后将 CSR 的内容保存起来并保护好。如果 CSR 是自己填的现成的则没有这一步。
再点击“NEXT”,就会生成 Let's Encrypt key(LE key),这是你身份的标识。现在复制它到别的地方,或者保存起来,保护好,将来能用到。
再点击“NEXT”,就进入到验证阶段了。在之前的界面中,默认选择的是 HTTP 验证方式,那么它会要求你创建一些文件上传到对应域名的网站下面,目录是“/.well-known/acme-challenge/”,文件名和文件的内容都规定好了。这对新手有些麻烦,所以我们以 DNS 验证为例。按照所示的的内容,添加好以 _acme-challenge(包括 _acme-challenge.www,如果有)为主机名的 DNS 记录就好了,记录类型是 TXT。
根据各个 DNS 服务商的生效时间不同,可能需要等一会儿记录才会生效。不过当今许多的服务商已经做到一分钟内生效了。自己觉得生效后点击“NEXT”。如果有些记录没做好,它也会再提醒的。不过要注意,提醒后点“NEXT”,要求的记录值会改变。如果不确定有没有生效,建议这一步多等一些时间,或者换用 HTTP 验证。
这些步骤都完成以后,SSL 证书就生成好了。注意一串英文中有几个数字,那是你的账户 ID,最好记下来,虽然一般用不太到。
出现了两个框。第一个写着“BEGIN CERTIFICATE”的框就是证书内容的框。里面包含了两个部分,一个是纯粹的你域名的 SSL 证书,另外一部分是 SSL 提供商的证书,叫作中间商证书、证书链或者 CA Bundle。使用的时候,把它们一块儿上传到(或填到)服务器(或服务器面板)就行了。有一些面板可能会要求分开填写,那就按照“BEGIN”(开始)和“END”(结束)的标识拆成两个部分吧。第二个框就是私钥了,是来配合使用的,跟之前的 CSR 是绑定着的。
当然,如果之前的 CSR 是你手动填的,不是它帮你生成的,那么这里就只有一个框,写有证书内容的框。至于私钥,肯定是你自己在生成 CSR 之前就已经生成的,或者是跟 CSR 同时生成的,这个网站不会再在上面显示出来。
至此,在 ZeroSSL 上面申请 Let's Encrypt 提供的免费 SSL 证书的过程就全部结束了。
Let's Encrypt 的 SSL 证书有效期只有 90 天,是可以免费续期的,也就是重新生成证书。在 ZeroSSL 上面的话呢,将先前保存的 LE key 和 CSR 填上去,再下一步就行了,不需要重新输入邮箱或域名,这样后面的验证过程也可以跳过;由于 CSR 没变,私钥也不用变,在服务器上更新证书的内容就好了。续期建议在到期前进行,不要真的等到它过期。
当然,如果你不是新手,肯定知道自动续期那种高级方法。这个在线工具你也不一定看得上,可以点击这里查看所有支持 Let's Encrypt 证书申请的东西。
附录:http 重定向 https ;Web.config配置
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTPS_HOST}" pattern="^(localhost)" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}:443/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
</system.webServer>