AWS中国区使用https访问部署在S3上的网站
问题描述
最近一个项目需要通过https的方式访问部署在S3上的网站,通过搜索引擎找到一篇文章,可以在AWS Global实现整个过程。但是目前AWS中国区有限制,CloudFront不能使用AWS Certificate Manager自己颁发的证书

解决思路
- 申请一个免费证书
- 导入到AWS IAM Certificate Store中
- 配置CloudFront使用整个证书
- Route53执行CloudFront
解决方案步骤
申请免费证书
https://letsencrypt.org/ 可以申请免费的短期证书(90天有效期),不需要公司证明等繁杂的手续,但需要证明这个域名是你的。
为了这个证书属于你,需要先让 http://your_domain_name 能够访问。
因为letsencrypt提供的certbot工具,支持自动配置nginx服务器,所以选择nginx作为网站服务器
在AWS中国区启动一台ubuntu 20.04的EC2

在配置EC2的security group的时候,确保80和443端口是开发的

在EC2上安装nginx
可根据这篇文章在ubuntu 20.04上安装配置nginx
确保执行以下命令,可以有html返回:
curl -i 127.0.0.1

回到AWS Console -> Route53,配置一条A记录,指向EC2,例如:

配置成功后,等DNS同步结束,就可以通过http方式访问你架设的nginx服务器了
安装certbot
certbot(letsencrypt官网指定的客户端)需要通过snap安装
sudo apt update
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version # check if installed successfully
(注:如果碰到snap安装慢的问题,可以考虑通过这篇文章提供的方式解决)
生成证书
可参考这篇文章,其实做到这步,你只需要执行一行命令即可:
sudo certbot --nginx # 按照向导提示选择正确的nginx网站
证书生成后,路径在这里: /etc/letsencrypt/live/{your_domain_name}/ 把该目录下的所有文件拷贝到本地主机的一个目录下,下一个步骤需要使用
(注:这个目录为隐藏目录,需要用sudo进行查看,可以用sudo cat ...命令查看每个文件内容并保存到本地)
sudo ls /etc/letsencrypt/live/{your_domain}/
sudo cat /etc/letsencrypt/live/{your_domain}/cert.pem
文件有: cert.pem chain.pem fullchain.pem privkey.pem
导入证书到IAM Certificate Store
参考这篇文章
aws iam upload-server-certificate --server-certificate-name SandboxSpaCertName --certificate-body file://cert.pem --private-key file://privkey.pem --certificate-chain file://chain.pem --path /cloudfront/sandbox/
配置CloudFront
回到AWS Console -> CloudFront, 创建一个distribution指向你的S3网站, 其中最关键的步骤是:使用Custom SSL Certificate:

1.替换成你的域名
2.选择Custom SSL Certificate
3.选择之前导入到IAM certificate store里面的证书
4.等待distribution部署完毕

配置Route53
回到AWS Console -> Route53: 创建一条cname指向CloudFront那条新创建的distribution

写在最后
这个问题,也许在AWS中国区后续的版本中能够解决。在这之前,如果你也遇到同样的问题,希望这篇文章可以帮到你。欢迎留言交流!
AWS中国区使用https访问部署在S3上的网站的更多相关文章
- 通过域名访问部署在服务器上的javaweb项目
因为对域名访问什么也不了解,遇到问题就有种不知道从哪里下手的茫然,也就更不知道错在哪里,前前后后一共折腾了一天多,最后问了阿里客服才成功弄出来,因此记录一下. 关于服务器的购买.配置,及域名的备案解析 ...
- 无法访问部署在linux上的Tomcat服务器解决方案
笔者使用环境:CentOS 6.4 Windows7 tomcat7 主要原因是linux开启了防火墙,有两种解决方案,一种是关闭防火墙,另外一种是开放所要访问的端口 1.关闭防火墙(非常不建议) ...
- 部署到IIS上的网站打开时总是显示无法找到资源解决方案
1.首先修改项目目录的访问权限:右键->属性->安全里面找到组名或用户名 ->编辑->添加一个用户取名everyOne并设置可以修改即可 2.然后在IIS下面,选中你的mvc项 ...
- 部署在IIS上的网站如何调试
引言 今天突然有个朋友问我,总听同事说在IIS中如何如何调试,到底如何调试呢?没办法,人家刚入门,还是亲手给他操作了一遍.也记录一下,希望能帮到那些不知道的孩纸. IIS中的网站调试 调试最常见的一般 ...
- 小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】
前言: 我的后端项目是Java写的,用的Springboot框架.在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功. 不成功具体点说就是:域名地址可以正 ...
- Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器
1. 规划 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155 htpps://auto.devcult.com 47.88.10.155 ...
- OkHttp配置HTTPS访问+服务器部署
1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二 ...
- AWS中国区的那些“坑”
前言 最近做的一个项目是要把公司在国外已经上线的一个物联网的项目移植到AWS中国区来. 由于AWS属于国外云产商,在中国运营,必须符合国家的相关规定: 必须是合资公司 (AWS北京区由北京光环新网运营 ...
- 从 HTTP 到 HTTPS - IIS 部署免费 HTTPS
这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇文章与 博客园 和 Segmentfault 共享. 前端开发QQ群:3 ...
随机推荐
- B. Irreducible Anagrams【CF 1290B】
思路: 设tx为t类别字符的个数. ①对于长度小于2的t明显是"YES"②对于字符类别只有1个的t明显是"YES"③对于字符类别有2个的t,如左上图:如果str ...
- Spring Boot 实现看门狗功能 (调用 Shell 脚本)
需要实现看门狗功能,定时检测另外一个程序是否在运行,使用 crontab 仅可以实现检测程序是否正在运行,无法做到扩展,如:手动重启.程序升级(如果只需要实现自动升级功能可以使用 inotify)等功 ...
- 老猿学5G扫盲贴:3GPP规范中部分与计费相关的规范序列文档
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 经咨询华为公司的相关专家,以及结合3GPP目录下载 ...
- PyQt学习随笔:ListView控件的视图和数据模型分离案例
Qt 中view类控件的目的是实现数据和模型分离,控件展示数据,数据保存在数据存储中,数据存储中的数据改变了,则控件中展示的数据跟随改变.当设计时只指定了一个控件和一个数据存储关联时,这种分离虽然也能 ...
- buu学习记录(下)(做题是不可能做题的)
目录: easy_calc 禁止套娃 EasyWeb Babysqli Easyweb easy_serialize_php 我有一个数据库 SSRFme 枯燥的抽奖 EasyPHP 题目解析: ea ...
- 开源性能监控分析工具glowroot
最近在做java性能瓶颈定位分析工具的研究,发现glowroot工具是一款相当不错的APM工具(Wonderful tool),架构简洁,部署简单,上手容易. 经过亲身搭建体验,总结了产品的架构,工具 ...
- 落谷 P2401 不等数列
题目链接. Solution 状态设计 设 \(f_{i, j}\) 为 \(1\) 到 \(i\) 的排列,其中有 \(j\) 个 \(\text{'<'}\) 的方案数. 状态转移 尝试从 ...
- Nginx安装配置教程
转自https://www.cnblogs.com/zhouxinfei/p/7862285.html nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是 ...
- JDK11 下载安装与配置环境变量
1.jdk11本身也包含jre,不需要安装jre,低版本需要安装jre 2.jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloa ...
- 推荐系统实践 0x10 Deep Crossing
这一篇,我们将介绍微软BING AD团队提出的Deep Crossing模型,用来解决大规模特征组合问题的模型,这些特征可以是稠密的,也可以是稀疏的,从而避免了人工进行特征组合,并使用了当年提出的残差 ...