Cloudfront在提供HTTPS内容方面不一致



我正在尝试更新我的博客(jacopretorius.net)以使用HTTPS。我没有在实时版本上尝试,而是创建了一个临时版本来测试这一点。staging.jacopretorius.net

我的堆栈看起来像这样:

杰基尔
  • 亚马逊S3
  • Amazon Cloudfront
  • 亚马逊路线53
  • 我正在使用S3_websitegem将生成的Jekyll内容部署到S3存储桶中。此gem还更新了相关的Cloudfront分发版。我将Cloudfront分发版配置为使用我的证书,并将临时URL作为CName添加到分发版中。最后,我从Route 53添加了两个别名来指向分发,一个用于IPv4,另一个用于IPv5。

    一切似乎都如预期的那样运转,除了一些我不理解的奇怪行为。除了https://staging.jacopretorius.net/archive/.我想这可能是因为URL没有扩展名,但是https://staging.jacopretorius.net/about/正在正确服务。这种情况在Chrome和Safari中一直存在。

    当我使用curl转储头文件时,头文件似乎表明一个URL(/about/one)总是Cloudfront未命中

    curl -s -D - https://staging.jacopretorius.net/archive/ -o /dev/null
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 63941
    Connection: keep-alive
    Date: Sun, 22 Oct 2017 20:11:29 GMT
    Last-Modified: Sun, 22 Oct 2017 19:25:42 GMT
    ETag: "289e13a6c58bd46dfa55d22cd5e0d1a6"
    Server: AmazonS3
    Age: 51
    X-Cache: Hit from cloudfront
    Via: 1.1 0a955f76d9c9f3e49899a6eb7a411ec5.cloudfront.net (CloudFront)
    X-Amz-Cf-Id: avt5CRfDiCwEU7TlhvUoCQKsR_jGB_2M_w5zy5mmDoFhogtS4doaQA==
    
    curl -s -D - https://staging.jacopretorius.net/about/ -o /dev/null
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 3757
    Connection: keep-alive
    Date: Sun, 22 Oct 2017 20:12:24 GMT
    Last-Modified: Sun, 22 Oct 2017 19:25:42 GMT
    ETag: "fa3a2f263be864012dc5a792d651a46c"
    Server: AmazonS3
    X-Cache: Miss from cloudfront
    Via: 1.1 fc8718fc654846d5ff65e1100874c1fc.cloudfront.net (CloudFront)
    X-Amz-Cf-Id: btONKzglg2FkPo9ycWiqQz-aBQ85sugrwTES14TfmedmBQNPPim_Jg==
    

    Cloudfront文档似乎表明这种URL没有问题,它只是说你应该保持一致(我就是这样)。

    我真的被这件事难住了。我在这里唯一的想法是,不知何故,Cloudfront正在缓存/archive/response,当它第一次尝试检索该资产时,它没有得到预期的响应,但由于内容在那里,所以这并不完全合理,只是不是HTTPS。

    当我加载https://staging.jacopretorius.net/archive/页面时,它是安全的。你凭什么说它不是安全的?如果您键入https://并看到页面内容,则该页面将通过HTTPS提供服务,但如果您没有看到绿色锁定图标,则浏览器认为该页面不完全安全。你需要点击Chrome浏览器地址栏中的小(i)图标,看看实际问题是什么。如果浏览器上的SSL证书有问题,它根本不会显示任何页面内容。

    我在Chrome中看到一条消息,说页面上的所有内容都不安全。我想这是因为页面上的搜索表单有一个http://www.google.com/search目标。尝试将其更改为https://www.google.com/search(并在进行更改后清除/archive/的CloudFront缓存)。

    最新更新