从 HTTP 到 HTTPS - IIS 部署免费 HTTPS [ASP.NET/MVC]

一、有哪些免费证书
这里只介绍部署HTTPS中尝试的免费证书方案,部署在 IIS8 上。

Let's Encrypt
沃通 (wosign) (不推荐)


本来在迁移中尝试部署过沃通 (wosign) 的签发的免费证书,但是后来发现了 Mozilla 官网( firefox/火狐 背后的开源组织 ) 里列出了 沃通的一系列可疑行为和问题,并且沃通 "秘密" 收购 StartCom(著名的免费 HTTPS 证书 StartSSL 即其旗下产品)行为可疑, Mozilla 基金会正在考虑对沃通以及 StartCom 这两个 CA 机构一年内新签发的所有 SSL 证书进行封杀。
但由于沃通当前的陷入的一系列丑闻,信任度降低,所以暂时不推荐使用沃通。并且沃通官网已暂时关闭免费 HTTPS 证书申请,所以我们这次仅推荐 Let's Encrypt。

二、使用Let's Encrypt部署HTTPS:

默认 Let's Encrypt 申请证书比较繁琐,所以我们在 windows 下使用工具 letsencrypt-win-simple 进行部署,简单方便快捷。


第1步:下载 letsencrypt-win-simple

第2步:在服务器中打开CMD,切换到letsencrypt-win-simple路径,键入命令:
letsencrypt.exe --accepttos --manualhost 你的域名 --webroot 你的网站物理路径(wwwroot路径)

letsencrypt-win-simple.V1.9.1 会自动生成临时文件并放到网站根目录,然后会让 Let's Encrypt 服务器会访问这个文件, 用于验证这个网站是否属于你。
如果验证不通过,是因为 IIS 需要修改一些配置,具体参见下文的详细说明。
验证通过后会实时颁发证书,并且 letsencrypt-win-simple.V1.9.1 会自动把证书添加到服务器中,然后直接在 IIS 中进行HTTPS部署即可。

第3步:letsencrypt-win-simple 自动验证域名所有权

第4步:验证通过后即时颁发证书

第5步:部署


三、可能会遇到的问题:

******************************************************************************

The ACME server was probably unable to reach http://linkflys.com/.well-known/acme-challenge/DGz4z_A_VsgO3dilCAB8bkgurpPt

Check in a browser to see if the answer file is being served correctly.

*****************************************************************************

出现这个错误表示生成的这个临时文件访问不到,验证不通过。
原因是因为 .well-know 这个文件夹带了前缀.,IIS会认为是不可识别的 MIMEType ,只需要在网站根目录下临时加上 mimeMap 配置即可:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension="." mimeType="text/plain" />
        </staticContent>
    </system.webServer>
</configuration>


记得验证通过后,如果你的网站不需要这个 mimeMap 配置,要记得删除。

更详细内容,请参考:https://segmentfault.com/a/1190000007073895