尝试使用Cloudflares新免费Universal SSL
在Heroku上获得完全免费的SSL阅读这篇文章: http://mikecoutermarsh.com/adding-ssl-to-heroku-with-cloudflare/
现在看来Cloudflare可以免费提供SSL。
我采取的步骤:
使用此快速中间件强制使用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();
}
});
heroku域http://example-app.herokuapp.com正常工作,并重定向到https://example-app.herokuapp.com,绿锁和所有。
http://example-app.com和https://example-app.com都不起作用。浏览器选项卡图标一直在旋转,永远不会解析。关于如何使这个工作的任何想法?这甚至可能吗?
看起来它实际上是可能的。来自CloudFlare支持:
比尔,
从根本上说,只要"起源"支持SSL连接,您可以将完全SSL与CloudFlare一起使用。
西蒙
CloudFlare今天发布了这篇博文: https://blog.cloudflare.com/universal-ssl-be-just-a-bit-more-patient/
我的网站已经开始解析,但获得了一个"您的连接不是私密的"像你可能看到的"错误中的消息"博客文章的一部分。同样在我的CloudFlare设置中,有一个" SSL发布"警报,所以我想,一旦它被发布,这可能只是工作。我会全部张贴。
答案 0 :(得分:21)
有一个问题:Heroku和Cloudflare之间的不安全。
*.herokuapp.com
证书,CF很高兴。不幸的是,Heroku和CF之间的中间人可以提供一个自签名的snakeoil.co.mordor
证书,CF也会同样高兴(用户无法分辨,他们只看到CF的证书)!它已在CloudFlare博客文章Introducing Strict SSL的完整SSL 部分中进行了记录。yourdomain.com
cert,并给出错误页面:-( 这种设置是否可以接受完整SSL?有人可能会争辩说,CF和Heroku之间的链接可能是“在骨干中,在云层之上”,并且对于主动攻击者而言相对难以控制,因此通信显然比没有TLS更安全。但它不是端到端的安全,而且你给用户一个通常与HTTPS和绿色锁定图标相关联的错误的安全感,有些人会说这更糟糕然后预先与根本没有TLS ...... [见关于https://news.ycombinator.com/item?id=8382335]的意见
截至2015年2月,我在CF中看不到配置Full Strict模式以期望在其他域上使用证书的选项。我不知道为什么CF不允许这样做,显然技术上可行。
答案 1 :(得分:12)
这确实与我设置的一样。问题是CloudFlare花了几天时间发布他们的Unlimited SSL。一旦它说“SSL活跃”'在您的CloudFlare SSL设置下,它将起作用。
答案 2 :(得分:2)
要使apex域工作,您可能需要使用支持ALIAS记录的DNS提供程序,Cloudflare也会使用DNS和would likely work。此处列出了更多提供商:https://devcenter.heroku.com/articles/custom-domains#root-domain
答案 3 :(得分:0)
要实现此功能,您需要为您的域创建Cloudflare的页面规则。我看起来像这样:
URL Pattern: my-domain.co/*
Forwarding to: https://www.my-domain.co/$1
从那里,您可以使用www上的CNAME指向my-domain.herokuapp.com。
Cloudflare(以及大多数其他DNS提供商)不允许根域的CNAME记录。仅适用于子域名。 www是一个子域名,因此您可以强制所有流量到www和cname到heroku。