通过http明文传输机敏信息造成的危害也早已不是什么新闻了,替网站加上https是势在必行。此处介绍的CloudFlare可以免费提供SSL签证。
免费得到https保护
- Let’s Encrypt —自行申请免费的SSL
- CloudFlare —与公众共享CloudFlare免费提供的SSL
本次的目标网站是架设在Heroku上的Free Dyno型应用程序,Free Dyno其实已经有提供免费的https给时间表的<app-name>.herokuapp.com
,但无法套用在自订的网址app-name.com
上。
对于架在Heroku上的网站来说,把dyno升级成hobby dyno,就会附赠免费的Heroku SSL保护,其实是最省时省力的「Announcing Free and Automated SSL Certs For All Paid Dynos」
Free dyno的app要自订网址再加上SSL保护,只能透过方法2 CloudFlare来处理。
步骤
首要需求
- 一个免费的Dyno Heroku App
- 一个域名
- 注册CloudFlare
Heroku设定自订网域
到Heroku Dashboard选择目标网站应用程式的 Setting 标签页
Domains and certificates 设定的地方点选 Add domain,填入你的网域
CloudFlare设定DNS
到CloudFlare输入你的网域
接者CloudFlare会去调出你的网域的Nameserver供应商的DNS设置
新增 CNANE,Name 填入子网域如 www 或根网域 @,Value填入 Heroku 预设的网址 <app-name>.herokuapp.com。记得要让要用的 Record 们的橘灯都亮起来喔。
根网域通常需要 A Record 填入 IP Address,Heroku App 提供的网址为浮动 IP,只能透过 Heroku 提供的网址用 CNAME flattening 动态指向过去,才能指定根网域。
CloudFlare 刚好有提供 CNAME flattening,想要让根网域直接对应到 Heroku app,新增 CNANE,Name 填入 @,Value一样填入 Heroku 预设的网址 <app-name>.herokuapp.com。
CloudFlare选择方案免费
更改网域名称服务器
把网域的 Nameservers 改成 CloudFlare 提供的 Nameservers(DNS 页签往下翻),这样一来,刚刚在 CloudFlare 设定的 DNS 才会生效。
NS设成CloudFlare:流量-> CloudFlare-> Heroku
到当初买域名的网域供应商平台上做设定,例如:Godaddy,Gandi.net,Namecheap,Hover…
以Hover 为例
设置成功后会在 Overview 看到Status: Active
如:
启用SSL
点CloudFlare Crypto页签,SSL的部分设置Off
为Full
或Flexible
先说结论:选 Full
凭证通过需要一点时间,当看到Status Active Certificate
恭喜你,已经能通过https访问网址了!(通过的时间约15分分钟左右吧)
官方表示免费方案凭证发行等24小时都是正常情况,不想等就花钱啊,15分让你上线。
在本页Status 的地方可以看到当前凭证发行的进度。
进度顺序:Initializing Certificate -> Authorizing Certificate -> Issuing Certificate -> Active Certificate
等SSL凭证发行太久
用Chrome浏览会出现错误消息:
如果超过一天了凭证还是没有发下来,你可以:
- 检查设定有没有错误,参考:「Troubleshooting SSL errors」
- CloudFlare > Select Website > Overview > Advanced > Delete,然后把 Nameservers 改回预设值,再重新跑一次 CloudFlare 设定 DNS,等了三天 亲测有效!
- 到Support 或者官方论坛发表求助,,许多前辈的过关案例在此。
把http请求全部向导https(选择性)
等凭证发下来在用
CloudFlare > Select Website > Crypto > Always use HTTPS > On
参考资料
- https://devcenter.heroku.com/articles/custom-domains#configuring-dns-for-root-domains
- https://support.cloudflare.com/hc/zh-CN/articles/205893698
- https://robots.thoughtbot.com/set-up-cloudflare-free-ssl-on-heroku
- https://support.cloudflare.com/hc/zh-CN/articles/203445970-What-does-SSL-Authorizing-mean-after-activating-free-Universal-SSL
转载需保留链接来源:软件玩家 » 给Heroku上的网站加上SSL保护