2016-04-21 185 views
2

我试图规避Heroku的SSL政策,它强制您为每月20美元的附加费支付费用。了解最佳路线是获得附加组件,我想知道用sinatra无法实现的附加组件吗?不会向服务器请求证书就像向服务器发送请求并因此被sinatra处理?有什么不同,使得不可能实现?如何在sinatra上设置SSL证书

+0

请在下面检查链接,它可能会对您有所帮助。 http://stackoverflow.com/questions/3696558/how-to-make-sinatra-work-over-https-ssl – rajeev

回答

2

因此,如果您通过herokuapp.com域访问您的应用程序,那么,heroku over ssl实际上是免费的。如果您想通过自定义域中的ssl为您的应用提供服务,则只需为附加组件支付费用。由于heroku应用程序由nginx代理(具有默认的* .herokuapp.com证书),因此在自定义域中创建dns记录而不购买插件会导致证书不匹配,并在人们试图访问您的网站时显示胖警告。该插件允许您添加自定义证书,以便证书与CNAME记录匹配。

虽然有一个免费的解决方法,正如@seph所说,Cloudflare对于这种情况非常有用,因为它是通用SSL提供。如果您在没有严格SSL检查的情况下将SSL设置为“完整”并强制执行HSTS(检查仪表板中的加密标签),那么您可以对您的heroku实例执行安全代理,并忽略任何证书不匹配,同时仍然具有完整的端到端加密。

+0

另外,我想,回应特定的“为什么我不能只发送证书使用Sinatra“(这真的是Puma/Unicorn/Webrick /一些其他Rack服务器) - 这是因为nginx代理,所有通往您应用程序的网络流量都会通过heroku控制的服务器路由到您的应用程序之前,这是这些证书真正重要的服务器。 – photoionized

+0

那么理论上我不能把我的自定义域名提供者的证书? – thesecretmaster

+0

@thesecretmaster - 域名提供商是指你的DNS提供商吗? DNS和代理服务器是两个完全不同的东西 - Cloudflare恰好恰好将两者与通用SSL混合在一起。如果你想在没有Cloudflare之类的情况下做到这一点,你可以将证书放在你自己的代理服务器上,并让它工作,但此时你必须拥有一台你拥有和管理的服务器......这样的失败使用Heroku的目的... – photoionized