草庐IT

node.js - Heroku + Cloudflare 完全免费的 SSL

coder 2023-05-29 原文

尝试使用 Cloudflares 新免费 Universal 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 应用中
  • 用这个 express 中间件强制 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.comhttps://example-app.com不工作。浏览器选项卡图标一直在旋转,永远不会解决。关于如何使它工作的任何想法?这甚至可能吗?

*更新

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

Hi Bill,

Fundamentally, as long as the "origin" supports an SSL connection you can use Full SSL with CloudFlare.

Simon

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

我的网站已开始解析,但收到一条“您的连接不是私密的”消息,就像博文的“您可能会看到的错误”部分一样。在我的 CloudFlare 设置中还有一个“SSL 发布”警报,所以我想一旦它发出,这可能会起作用。我会及时通知你们的。

最佳答案

有一个问题:Heroku 和 Cloudflare 之间不安全。

  • 它可以使用“灵活 SSL”——Heroku 和 CF 之间的未加密 HTTP。我们不希望这样。
  • 它也适用于“完全 SSL”——Heroku 和 CF 之间的 HTTPS,但没有 CF 验证证书。 Heroku 提供了一个 *.herokuapp.com 证书,CF 很高兴。不幸的是,Heroku 和 CF 之间的中间人可以提供自签名的 snakeoil.co.mordor 证书,CF 也会同样高兴(用户无法判断,他们只是见CF的证书)!它记录在 CloudFlare 博客文章 Introducing Strict SSLFull SSL 部分中.
  • 但是“完全 SSL(严格)”不起作用,因为 CF expects Heroku to present yourdomain.com cert , 并给出一个错误页面:-(
    [您可以当然自己获得这样的证书并支付 Heroku 将其提供给 CF 的费用,但这又回到了原点……您确实获得了 CDN 的好处,但它不是“完全免费的 SSL Heroku"。] CloudFlare 文章 Configure CloudFlare and Heroku over HTTPS 中讨论了这种情况。 .

那么这种带有完整 SSL 的设置是否可以接受?有人可能会争辩说,CF 和 Heroku 之间的链接可能是“在云层之上的 Backbone 中”,并且对于主动攻击者来说相对难以控制,因此通信显然比没有 TLS 更安全。但它不是端到端安全的,你给用户一种错误的安全感,通常与 HTTPS 和绿色锁图标相关联,有些人会说这比提前使用更糟糕根本没有TLS... [见意见https://news.ycombinator.com/item?id=8382335 ]

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

关于node.js - Heroku + Cloudflare 完全免费的 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26131611/

有关node.js - Heroku + Cloudflare 完全免费的 SSL的更多相关文章

  1. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  4. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  5. ruby-on-rails - 在 heroku 的 .fonts 文件夹中包含自定义字体,似乎无法识别它们 - 2

    Heroku支持人员告诉我,为了在我的Web应用程序中使用自定义字体(未安装在系统中,您可以在bash控制台中使用fc-list查看已安装的字体)我必须部署一个包含所有字体的.fonts文件夹里面的字体。问题是我不知道该怎么做。我的意思是,我不知道文件名是否必须遵循heroku的任何特殊模式,或者我必须在我的代码中做一些事情来考虑这种字体,或者如果我将它包含在文件夹中它是自动的......事实是,我尝试以不同的方式更改字体的文件名,但根本没有使用该字体。为了提供更多详细信息,我们使用字体的过程是将PDF转换为图像,更具体地说,使用rghostgem。并且最终图像根本不使用自定义字体。在

  6. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  7. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  8. ruby-on-rails - Heroku 吃掉了我的自定义 HTTP header - 2

    我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份​​验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby​​脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara

  9. ruby - 未定义的方法 auto_upgrade!将 Sinatra/DataMapper 应用程序推送到 Heroku 时 - 2

    有谁知道在Heroku的Bamboo堆栈上启动并运行使用DataMapper的Sinatra应用程序所需的魔法咒语?Bamboo堆栈不包含任何预安装的系统gem,无论我尝试使用何种gem组合,我都会不断收到此错误:undefinedmethod`auto_upgrade!'forDataMapper:Module(NoMethodError)这是我的.gems文件中的内容:sinatrapgdatamapperdo_postgresdm-postgres-adapter这些是我将应用程序推送到Heroku时安装的依赖项:----->Herokureceivingpush----->Si

  10. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

随机推荐