我无法使用S3上托管的静态网站设置HTTPS。我遵循了官方文档以及一些教程,但是仍然无法对其进行故障排除。我的设置如下。
首先,我通过AWS Certificate Manager请求SSL证书。实际上,我已经请求了其中两个,但是它们都不有助于HTTPS正常工作。 SSL证书域如下所示。我已验证状态为issued
。
请注意,我的域名已在Google Domains中注册。我有3个CNAME条目,如下所示。
然后在CloudFront上创建一个发行版。起源和起源组是
sub.mydomain.com.s3.amazonaws.com
S3-sub.mydomain.com
S3 Origin
行为是
Default(*)
S3-sub.mydomain.com
Redirect HTTP to HTTPS
在不同的教程网站上,我看到推荐的Viewer Protocol Policy
是任何值之一(例如HTTP and HTTPS
,Redirect HTTP to HTTPS
,HTTPS Only
)。我尝试了所有3个值,但并没有达到预期的效果(修补每个修补程序的成本很高,因为每次更改都需要15分钟以上才能部署。)
在CloudFront发行版的状态为Status = {Deployed
和State = Enabled
之后,我尝试通过HTTPS转到我的站点,但是它挂起并超时。 HTTP访问仍然可以正常工作,这与我对Viewer Protocol Policy = Redirect HTTP to HTTPS
的理解背道而驰。
对我在这里做错的任何想法吗?许多教程建议使用端到端AWS服务(例如DNS)来简化设置,但是我已经在Google上注册了我的域。
请注意,this post是关于仅具有VPN访问权限的HTTPS,而this post建议使用全AWS方法。第二篇文章很有趣,因为一个用户建议输入A
记录。目前,我的子域只有CNAME
条记录。如果要创建A
记录,我将指向何处?
更新:我进入Google Domains,删除了指向S3存储桶URL的sub
的CNAME条目。然后,我添加了一个新的CNAME,其中sub
指向CloudFront URL。当我尝试使用HTTPS时,我可以找到一些东西,但是我得到了AccessDenied的XML。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>186A2418C76E7526</RequestId>
<HostId>
somelongstring
</HostId>
</Error>
答案 0 :(得分:0)
通过另外做2件事,我就能使一切正常工作。
在Google Domains上,我创建了一个B2
指向CloudFront网址的CNAME。
在CloudFront上,为避免出现BEGIN
DECLARE @ids TABLE (@id UNIQUEIDENTIFIER);
INSERT INTO dbo.CHRIS_BASE (B1, B2)
SELECT B1, B2
FROM INSERTED
OUTPUT id INTO @ids;
INSERT INTO dbo.CHRIS_CUSTOM (ID, C1, C2)
SELECT ids.id, i.C1, i.C2
FROM INSERTED i JOIN
@ids ids
ON i.B1 = ids.B1 AND i.B2 = ids.B2;
END;
消息,我将sub
设置为AccessDenied
。显然,来自S3的索引文档设置已与CloudFront分离。