因为最近网站搬到了vps上,我也开始考虑申请ssl证书,把网站升级到https。
但是说到证书这一块,就又触及到我的知识盲区了。后来还是找了教程摸索出来的。
申请Let's Encrypt 证书教程:
《windows申请免费SSL证书-Let's Encrypt》
(申请Let's Encrypt 证书有很多不同的途径,使用的工具和步骤也不尽相同,我这个办法好像比较麻烦,不过能对流程有个大致的了解。另外有一些我踩过的坑,我会在文末附加说明)
证书申请完成之后,如何导入到 IIS 以及在网站里绑定,参考下面文章的 IIS 部分:
《IIS部署SSL,.crt .key 的证书》
ps:导入pfx文件的时候密码不用填。
此外还需要将http请求的页面自动跳转到https,参考教程:
《(各种版本) http怎么做自动跳转https?》
我添加了里面的iis的规则,可以正常使用。
现在整站已经升级到https了,但面临另一个问题:本站图片都是放在七牛图床上的,而且是放在多个不同的存储空间里。现在七牛的这些域名都是http的,如果要升级到https,我的域名必须做备案。
备案我是不想做的,所以就先这样吧。目前在后台登陆界面和后台里是安全的,在前台页面由于引用了http的图片,所以会提示不安全。不过影响也不大,前台没什么需要输入账号密码的地方。
针对上面申请Let's Encrypt 证书的教程的注意事项:
第一步先确认自己的PowerShell 版本号, windows server 2012 上面是4.0,需要用第二种方法安装ACMESharp。
第三步、第四步、第五步里面的email 地址、域名、iis里的站点名,这些都要替换成自己的。
第五步验证通过之后,会在网站根目录下生成.well-known 文件夹,里面的文件会被用于验证。要让这个文件夹能正常访问和用于验证,需要安装APS .NET 。
之后用浏览器访问这个生成的文件,才能继续下一步。
另外如果域名是国内注册的,默认DNS服务器也是国内的,那么最好改成国外的DNS服务器,比如GoDaddy的。用国内DNS服务器的话可能在某个步骤无法验证,似乎是第四步还是哪里来着。我是在GoDaddy上注册了个账号,然后使用它的DNS服务器做的解析(免费功能)。
另外教程上说,第六步失败的话就去重复第四步、第五步的流程,需要注意的是重新尝试的话每次都要更改最后的名字(dns1):
New-ACMEIdentifier -Dns myserver.example.com -Alias dns1
从第七步开始,命令里开始出现“cert1”,其和上面的“dns1”类似,如果你因为提交失败而重新提交,也要更改这个名字。教程里后面出现dns1、cert1的地方都要更改。
New-ACMECertificate dns1 -Generate -Alias cert1
最后我成功时用的都是dns4、cert4了……可想而知踩了多少坑,而我更佩服自己的是自己竟然摸索出来了。里面报错的时候基本上连google 都搜不到有用的信息,只能自己去尝试。
教程里最后的“下载IIS用的PFX文件”的部分有两行代码,第二行比第一行加了个CertificatePassword 参数:
Get-ACMECertificate cert1 -ExportPkcs12 "path\to\cert1.pfx" Get-ACMECertificate cert1 -ExportPkcs12 "path\to\cert1.pfx" -CertificatePassword 'g1Bb3Ri$h'
我先执行了第一行,之后第二行执行失败,提示什么东西已存在的样子,不过证书可以正常使用了,我就没再深究。
证书申请下来后,IIS里面用到的是pfx文件。导入证书的时候我好像没填密码,不过也能正常用。最后给网站增加一个https解析就行了。
今天第一次申请的证书就要到期了,我从“第四步:创建一个你要申请域名身份”开始,重新申请了一个证书。
windows+IIS 申请 Let's Encrypt 证书相关记录
-
Google Chrome 59Windows 每月都要申请一次的,有问题的图片都是你的骑牛云上的
-
Google Chrome 45Windows 7 x64 Edition 360浏览器显示的不是全ssl,估计是图片不是Https地址吧。后台倒是。
对了,好像caddy能够直接接管证书申请