一、网站部署
LetsEncrypt-Win-Simple可以自动发现已经部署的网站供我们选择要生成证书的网站,而且还需要进行验证。所以在生成证书之前,确保网站已经部署好并可以正常访问。
二、生成证书
软件下载地址如下:
https://github.com/Lone-Coder/letsencrypt-win-simple/releases
直接下载zip压缩包就好,下载完之后解压运行里面的letsencrypt.exe打开控制台窗口,第一次运行会提示你输入一个邮箱以供后续使用。
Let's Encrypt (Simple Windows ACME Client)
Renewal Period: 60
Certificate Store: WebHosting
ACME Server: https://acme-v01.api.letsencrypt.org/
Config Folder: C:\Users\ling\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org
Certificate Folder: C:\Users\ling\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org
Getting AcmeServerDirectory
Enter an email address (not public, used for renewal fail notices):
输入一个可用邮箱回车即开始注册,并问你是否同意协议
Calling Register
Do you agree to https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf? (Y/N)
输入Y回车,邮箱注册完之后,程序会自动获取当前服务器部署的所有网站,如下:
Scanning IIS Site Bindings for Hosts
1: IIS xxling.com (D:\www\xxx)
2: IIS www.xxling.com (D:\www\xxx)
W: Generate a certificate via WebDav and install it manually.
F: Generate a certificate via FTP/ FTPS and install it manually.
M: Generate a certificate manually.
A: Get certificates for all hosts
Q: Quit
Which host do you want to get a certificate for:
输入1或者2就会为相应的域名生成证书,M为手动生成一个证书,A则为所有域名生成证书。这里我们选择A然后回车继续,生成完证书程序还会自动为相应网站配置IIS的SSL。选择了A之后生成的证书在C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org下,具体看后面输出的提示会有位置信息。
由于Let's Encrypt免费SSL证书只有90天的有效期,过期需要更新,该程序会生成一个计划任务,每天上午9点钟运行检查过期的证书并更新。所以生成完成证书会提示你是不是需要指定用户运行刷新证书的计划任务(会显示下次过期的时间),选择Y,输入相应的用户和密码即可。
注意:生成的计划任务的执行程序默认是生成证书时的letsencrypt.exe的路径,请到管理工具-计划任务查看相应任务属性,确认action的letsencrypt.exe路径对不对,如果移动到其它地方了也需要进行相应修改,否则会执行失败!
三、IIS配置
打开IIS,查看域名绑定,就会看到多了443的端口绑定,证书也以配置好。重启一下iis,通过https访问就可以了。
如果是手动配置,在IIS7配置https绑定是host name那栏灰掉,不可输入,此时如果需要指定相应的域名,可以打开以下位置文件:
C:\Windows\System32\inetsrv\config\applicationHost.config
搜索相应域名找到该网站的配置节点,你会发现不输入域名是的https配置如下
<binding protocol="https" bindingInformation="*:443:" />
将其改为
<binding protocol="https" bindingInformation=":443:www.xxling.com" />
即可,域名改为自己实际的域名。
其次,要注意的是,IIS只能绑定一个SSL证书,这生成证书的新版软件好像没有多域名证书生成的选项了,所以只能把其他域名重定向到有证书的域名上。
四、强制HTTPS访问
首先IIS配置选中要求SSL选项
IIS6中,站点属性-》目录安全性-》编辑中把“要求安全通道(SSL)”勾选上即可。
IIS7、8中,SSL设置-》把“要求SSL”勾选即可
此时通过http访问的话会报403错误,我们找到403的html页面,加入以下JavaScript脚本进行跳转:
<script type="text/javascript">
var url = window.location.href;
if (url.indexOf("https") < 0) {
url = url.replace("http:", "https:");
window.location.replace(url);
}
</script>
403文件所在路径如下:
IIS6.0 :C:\WINDOWS\Help\iisHelp\common\403-4.htm
IIS7.0以上 :C:\inetpub\custerr\zh-CN\403.htm
如果使用的英文版系统zh-CN可能为en-US或者其它。
此时我们通过http访问我们的网站时就会自动跳转到https了。