我正在使用Amazon S3存储桶来使用我的.NET应用程序上传和下载数据。现在我的问题是我想使用SSL访问我的S3存储桶。是否可以为Amazon s3存储桶实施SSL?
zed5wv101#
您可以通过SSL访问您的文件,如下所示:
https://s3.amazonaws.com/bucket_name/images/logo.gif
如果您为存储桶使用自定义域,则可以将S3和CloudFront与您自己的SSL证书一起使用(或通过Amazon Certificate Manager生成免费证书):http://aws.amazon.com/cloudfront/custom-ssl-domains/
yvgpqqbh2#
自定义域SSL证书今天刚刚增加了$600/cert/月。在下面注册您的邀请:http://aws.amazon.com/cloudfront/custom-ssl-domains/
更新:SNI客户提供的证书现在可以免费获得。比600美元/月便宜得多,而且XP几乎被淘汰,它应该能很好地用于大多数用例。
@skalee AWS有一个机制来实现海报所要求的,“为Amazon s3 bucket实现SSL”,它被称为CloudFront。我阅读“实现”作为“使用我的SSL证书”,而不是“只是把一个S的HTTP URL,我相信OP可以猜测。由于CloudFront的成本与S3完全相同(0.12美元/GB),但围绕SSL有大量的附加功能,并允许您添加自己的SNI证书而无需额外费用,因此它是在您的域上“实施SSL”的明显解决方案。
CloudFront
de90aj5v3#
我发现你可以通过Cloud Flare服务轻松做到这一点。设置一个存储桶,在存储桶上启用虚拟主机,并通过Cloudflare将所需的CNAME指向该端点。当然还要支付服务费但5 - 20美元对600美元更容易消化。详细信息在这里:https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/
7ajki6be4#
直接使用S3是不可能的,但您可以从您的存储桶创建Cloud Front分发。然后转到证书管理器并请求证书。亚马逊免费提供。如果您已成功确认认证,请将其分配给您的Cloud Front分发。还记得设置规则将http重定向到https。我在Amazon S3上托管了几个静态网站,比如我的个人网站,我已经分配了SSL证书,因为他们有Cloud Front发行版。
e4yzc0pl5#
如果你真的需要它,考虑重新定向。例如,在请求assets.my-domain.example.com/path/to/file时,您可以执行301或302重定向到my-bucket-name.s3.amazonaws.com/path/to/file或s3.amazonaws.com/my-bucket-name/path/to/file(请记住,在第一种情况下,my-bucket-name不能包含任何点,否则它将不匹配S3证书中声明的*.s3.amazonaws.com, s3.amazonaws.com)。没有测试过,但我相信它会工作。然而,我看到了一些陷阱。第一个是非常明显的,一个额外的请求来获得这个重定向。我怀疑你可以使用域名注册商提供的重定向服务器-你必须以某种方式上传适当的证书-所以你必须使用自己的服务器。第二个是,你可以在网页源代码中使用你的域名,但是当用户在单独的标签中打开图片时,地址栏将显示目标网址。
assets.my-domain.example.com/path/to/file
my-bucket-name.s3.amazonaws.com/path/to/file
s3.amazonaws.com/my-bucket-name/path/to/file
my-bucket-name
*.s3.amazonaws.com, s3.amazonaws.com
cygmwpex6#
如前所述,您不能为S3存储桶创建免费证书。但是,您可以创建Cloud Front分发,然后为Cloud Front分配证书。您为您的域请求证书,然后只需在Cloud Front设置中将其分配给Cloud Front分发。我已经使用这种方法通过SSL服务静态网站以及服务静态文件。对于静态网站创建亚马逊是去的地方。这是真正负担得起的获得一个静态网站与SSL。
nqwrtyyt7#
将DNS/SSL添加到Amazon S3存储桶的最简单方法是使用CloudFlare worker!我发现了这个多汁的小金块,它起了作用。https://fershad.com/writing/proxy-aws-s3-content-cloudflare-workers/注意,在主机名中使用正确的区域(即us-west-1、us-west-2)。搞定了!
addEventListener('fetch', event => { event.respondWith(handleRequest(event)) }) async function handleRequest(event) { let requestFolder = '/files' let s3Folder = '/' let url = new URL(event.request.url) const cache = caches.default let origPathname = url.pathname const filename = url.toString().split('/').pop() url.hostname = 'bucket-name.s3-us-west-2.amazonaws.com' url.pathname = origPathname.replace(new RegExp('^'+escapeRegExp(requestFolder)), s3Folder) response = await fetch(url) response = new Response(response.body, { ...response}) return response; } function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\\/]/g, '\\$&'); }
6gpjuf908#
这可以使用Nginx和CertBot完成,如下所示:
**步骤1:**将Nginx和CertBot安装到您的服务器示例上,例如(Ec2或任何第三方)**第二步:**在Nginx配置目录下创建文件
/etc/nginx/conf.d/your_file_name.conf包含以下内容
server { listen 80; server_name subkeyword.yourdomain.com; location / { proxy_pass http://your_bucket_name.s3-website.your_region.amazonaws.com; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
**第三步:**执行以下命令,为您的子域创建证书
sudo certbot --nginx -d subkeyword.yourdomain.com
注:A record should be there for server IP in your domain hosted zone
A record should be there for server IP in your domain hosted zone
8条答案
按热度按时间zed5wv101#
您可以通过SSL访问您的文件,如下所示:
如果您为存储桶使用自定义域,则可以将S3和CloudFront与您自己的SSL证书一起使用(或通过Amazon Certificate Manager生成免费证书):http://aws.amazon.com/cloudfront/custom-ssl-domains/
yvgpqqbh2#
自定义域SSL证书今天刚刚增加了$600/cert/月。在下面注册您的邀请:http://aws.amazon.com/cloudfront/custom-ssl-domains/
更新:SNI客户提供的证书现在可以免费获得。比600美元/月便宜得多,而且XP几乎被淘汰,它应该能很好地用于大多数用例。
@skalee AWS有一个机制来实现海报所要求的,“为Amazon s3 bucket实现SSL”,它被称为
CloudFront
。我阅读“实现”作为“使用我的SSL证书”,而不是“只是把一个S的HTTP URL,我相信OP可以猜测。由于CloudFront的成本与S3完全相同(0.12美元/GB),但围绕SSL有大量的附加功能,并允许您添加自己的SNI证书而无需额外费用,因此它是在您的域上“实施SSL”的明显解决方案。
de90aj5v3#
我发现你可以通过Cloud Flare服务轻松做到这一点。
设置一个存储桶,在存储桶上启用虚拟主机,并通过Cloudflare将所需的CNAME指向该端点。当然还要支付服务费但5 - 20美元对600美元更容易消化。
详细信息在这里:https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/
7ajki6be4#
直接使用S3是不可能的,但您可以从您的存储桶创建Cloud Front分发。然后转到证书管理器并请求证书。亚马逊免费提供。如果您已成功确认认证,请将其分配给您的Cloud Front分发。还记得设置规则将http重定向到https。
我在Amazon S3上托管了几个静态网站,比如我的个人网站,我已经分配了SSL证书,因为他们有Cloud Front发行版。
e4yzc0pl5#
如果你真的需要它,考虑重新定向。
例如,在请求
assets.my-domain.example.com/path/to/file
时,您可以执行301或302重定向到my-bucket-name.s3.amazonaws.com/path/to/file
或s3.amazonaws.com/my-bucket-name/path/to/file
(请记住,在第一种情况下,my-bucket-name
不能包含任何点,否则它将不匹配S3证书中声明的*.s3.amazonaws.com, s3.amazonaws.com
)。没有测试过,但我相信它会工作。然而,我看到了一些陷阱。
第一个是非常明显的,一个额外的请求来获得这个重定向。我怀疑你可以使用域名注册商提供的重定向服务器-你必须以某种方式上传适当的证书-所以你必须使用自己的服务器。
第二个是,你可以在网页源代码中使用你的域名,但是当用户在单独的标签中打开图片时,地址栏将显示目标网址。
cygmwpex6#
如前所述,您不能为S3存储桶创建免费证书。但是,您可以创建Cloud Front分发,然后为Cloud Front分配证书。您为您的域请求证书,然后只需在Cloud Front设置中将其分配给Cloud Front分发。我已经使用这种方法通过SSL服务静态网站以及服务静态文件。
对于静态网站创建亚马逊是去的地方。这是真正负担得起的获得一个静态网站与SSL。
nqwrtyyt7#
将DNS/SSL添加到Amazon S3存储桶的最简单方法是使用CloudFlare worker!
我发现了这个多汁的小金块,它起了作用。
https://fershad.com/writing/proxy-aws-s3-content-cloudflare-workers/
注意,在主机名中使用正确的区域(即us-west-1、us-west-2)。
搞定了!
6gpjuf908#
这可以使用Nginx和CertBot完成,如下所示:
**步骤1:**将Nginx和CertBot安装到您的服务器示例上,例如(Ec2或任何第三方)
**第二步:**在Nginx配置目录下创建文件
/etc/nginx/conf.d/your_file_name.conf
包含以下内容
**第三步:**执行以下命令,为您的子域创建证书
注:
A record should be there for server IP in your domain hosted zone