给Heroku上的网站加上SSL保护

通过http明文传输机敏信息造成的危害也早已不是什么新闻了,替网站加上https是势在必行。此处介绍的CloudFlare可以免费提供SSL签证。

免费得到https保护

本次的目标网站是架设在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如:

启用S​​SL

点CloudFlare Crypto页签,SSL的部分设置OffFullFlexible

先说结论:选 Full

凭证通过需要一点时间,当看到Status Active Certificate恭喜你,已经能通过https访问网址了!(通过的时间约15分分钟左右吧)

官方表示免费方案凭证发行等24小时都是正常情况,不想等就花钱啊,15分让你上线。

在本页Status 的地方可以看到当前凭证发行的进度。

进度顺序:Initializing Certificate -> Authorizing Certificate -> Issuing Certificate -> Active Certificate

等SSL凭证发行太久

用Chrome浏览会出现错误消息:

如果超过一天了凭证还是没有发下来,你可以:

  1. 检查设定有没有错误,参考:「Troubleshooting SSL errors
  2. CloudFlare > Select Website > Overview > Advanced > Delete,然后把 Nameservers 改回预设值,再重新跑一次 CloudFlare 设定 DNS,等了三天 亲测有效!
  3. 到Support 或者官方论坛发表求助,,许多前辈的过关案例在此。

把http请求全部向导https(选择性)

等凭证发下来在用

CloudFlare > Select Website > Crypto > Always use HTTPS > On

转载需保留链接来源:软件玩家 » 给Heroku上的网站加上SSL保护

赞 (0)