Heroku + Cloudflare完全免费的SSL

Bil*_*ton 20 ssl heroku node.js express cloudflare

尝试使用Cloudflares新的免费通用SSL在Heroku上获得完全免费的SSL

阅读这篇文章:http: //mikecoutermarsh.com/adding-ssl-to-heroku-with-cloudflare/

这似乎表明Cloudflare现在可以免费提供SSL.

我采取的步骤:

  • 使用Cloudflare设置我的DNS(免费帐户)
  • 转发我的域名到我的herokuapp(CNAME example-app.com - > example-app.herokuapp.com)
  • 将Cloudflare SSL选项设置为"完整SSL"
  • 将我的域名添加到我的heroku应用程序中
  • 用这个快速中间件强制https:

    app.use(function(req, res, next) {
        if (req.headers['x-forwarded-proto'] != 'https') {
            res.redirect('https://' + req.headers.host + req.path);
        }
        else {
            return next();
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)

heroku域http://example-app.herokuapp.com正常工作,并重定向到https://example-app.herokuapp.com,绿锁和所有.

无论http://example-app.comhttps://example-app.com不起作用.浏览器选项卡图标一直在旋转,永远不会解析.关于如何使这个工作的任何想法?这甚至可能吗?

*更新

这看起来实际上是可能的.来自CloudFlare支持:

比尔,

从根本上说,只要"origin"支持SSL连接,您就可以使用Full SSL和CloudFlare.

西蒙

CloudFlare今天发布了这篇博文:https: //blog.cloudflare.com/universal-ssl-be-just-a-bit-more-patient/

我的网站已经开始解析,但是收到"您的连接不是私密"的消息,就像博客帖子中的"您可能看到的错误"部分一样.同样在我的CloudFlare设置中有一个"SSL发出"警报,所以我想一旦发布它可能只是工作.我会保留你们的帖子.

Ben*_*kin 21

有一个问题:Heroku和Cloudflare之间的不安全感.

  • 它可以使用"灵活SSL" - Heroku和CF之间的未加密HTTP.我们不希望这样.
  • 它也适用于"完全SSL" - Heroku和CF之间的HTTPS,但没有CF验证证书.Heroku提供*.herokuapp.com证书,CF很高兴.不幸的是,Heroku和CF之间的中间人可以提供自签名snakeoil.co.mordor证书,CF也会同样高兴(用户无法分辨,他们只看到CF的证书)!它在CloudFlare博客文章介绍严格SSL完整SSL部分中有记录.
  • 但"全SSL(严格)"是不行的,因为CF预计的Heroku呈现yourdomain.com证书,并给出了一个错误页面:-(
    [您可以当然获得如此证书youself并支付Heroku上为它投放到CF但是这要回你可以获得CDN的好处,但它不是"Heroku上的完全免费的SSL".] CloudFlare文章通过HTTPS配置CloudFlare和Heroku讨论了这种情况.

那么这个设置是否可以接受Full SSL?有人可能会争辩说,CF和Heroku之间的链接可能是"在骨干中,在云层之上",并且对于主动攻击者而言相对难以控制,因此通信显然比没有TLS更安全.但它并不是端到端的安全,而且你给用户带来了通常与HTTPS和绿色锁定图标相关的错误安全感,有些人会说这更糟糕,然后预先没有TLS ...... [见关于https://news.ycombinator.com/item?id=8382335的意见]

截至2015年2月,我在CF中没有看到配置完全严格模式以期望在其他域上获得证书的选项.我不知道为什么CF不允许这样做,它显然在技术上是可行的.


Bil*_*ton 12

这确实像我设置的那样工作.问题是CloudFlare花了几天时间发布他们的无限SSL.一旦在CloudFlare SSL设置下显示"SSL active",它就会起作用.