2016-04-21 125 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