Cloudflare + Heroku SSL

dmt*_*989 1 ssl ruby-on-rails heroku cloudflare

我有一个在heroku上运行的rails应用程序,我正在使用Cloudflare Pro和他们的完整SSL来加密以下流量:用户<-SSL-> Cloudflare <-SSL-> Heroku,详见:http://mikecoutermarsh.com/ 添加-ssl-to-heroku-with-cloudflare /.

我还使用rack-ssl-enforcer gem来强制所有http请求通过https.

这是正常的,除了我有以下问题,浏览器:

1)Firefox.我必须在第一次访问该站点时添加安全性异常,获得"此站点不受信任"警告.进入网站后,我在地址栏中也有警告:在此输入图像描述

2)Chrome:第一次加载页面,但地址栏中的锁定上有一个警告三角形,点击后显示:

您的连接使用128位加密进行加密.但是,此页面包含其他不安全的资源.其他人在传输过程中可以查看这些资源,攻击者可以修改这些资源以更改页面外观.连接使用TLS 1.2.使用AES_128_GCM对连接进行加密和身份验证,并使用ECDHE_RSA作为密钥交换机制.

Safari:最初使用https徽章加载,但会立即下降

有没有办法利用Cloudflare SSL +搭载Heroku原生SSL而不会遇到这些安全警告?如果没有,我认为配置中没有多少价值.

dmt*_*989 9

我对抛弃对Cloudflare和Heroku的错误指责表示道歉:-)

原来问题不是两者的错,而是应用程序上的图像(从AWS S3提供)在没有https的情况下提供.

如果有人遇到这种情况,那么在浪费的一天中吸取了教训:

S3只允许您通过https提供内容,如果您从您的存储桶专用网址提供服务:s3.amazonaws.com/your-bucket-name/etc ..

a)我尝试设置静态网站托管,所以我可以使用网址"your-bucket-name.your-url.s3-website-us-east-1.amazonaws.com/etc ...",然后在我的DNS中设置一个CNAME,将"your-bucket-name.your-url"发送到"your-bucket-name.your-url.s3-website-us-east-1.amazonaws.com/etc". ..",以及相当高的网址

b)这有效,但AWS只允许您通过https提供完整的URL(s3.amazonaws.com/your-bucket-name/etc ..)或*.s3-website-us-east-1.amazonaws.com/etc ...",如果您的存储桶名称中有一个点(your-bucket-name.your-url),这是不可行的,这是我进行CNAME重定向所必需的

如果您想在自定义域上使用带有https的AWS CDN,则AWS的唯一选项是具有SSL证书的CloudFront,每个区域收取600美元/月的费用.不用了,谢谢!

最后,我把它搞砸了,看起来像丑陋的图片网址:https://s3-website-us-east-1.amazonaws.com/mybucketname ...",并使用paperclip,我指定https:with ":s3_protocol =>:https,"在我的模型中.除此之外,现在一切正常.