问题描述

最近一个项目需要通过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返回:

  1. curl -i 127.0.0.1

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



配置成功后,等DNS同步结束,就可以通过http方式访问你架设的nginx服务器了

安装certbot

certbot(letsencrypt官网指定的客户端)需要通过snap安装

  1. sudo apt update
  2. sudo apt install snapd
  3. sudo snap install core
  4. sudo snap refresh core
  5. sudo snap install --classic certbot
  6. sudo ln -s /snap/bin/certbot /usr/bin/certbot
  7. certbot --version # check if installed successfully

(注:如果碰到snap安装慢的问题,可以考虑通过这篇文章提供的方式解决)

生成证书

可参考这篇文章,其实做到这步,你只需要执行一行命令即可:

  1. sudo certbot --nginx # 按照向导提示选择正确的nginx网站

证书生成后,路径在这里: /etc/letsencrypt/live/{your_domain_name}/ 把该目录下的所有文件拷贝到本地主机的一个目录下,下一个步骤需要使用

(注:这个目录为隐藏目录,需要用sudo进行查看,可以用sudo cat ...命令查看每个文件内容并保存到本地)

  1. sudo ls /etc/letsencrypt/live/{your_domain}/
  2. sudo cat /etc/letsencrypt/live/{your_domain}/cert.pem

文件有: cert.pem chain.pem fullchain.pem privkey.pem

导入证书到IAM Certificate Store

参考这篇文章

  1. 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上的网站的更多相关文章

  1. 通过域名访问部署在服务器上的javaweb项目

    因为对域名访问什么也不了解,遇到问题就有种不知道从哪里下手的茫然,也就更不知道错在哪里,前前后后一共折腾了一天多,最后问了阿里客服才成功弄出来,因此记录一下. 关于服务器的购买.配置,及域名的备案解析 ...

  2. 无法访问部署在linux上的Tomcat服务器解决方案

    笔者使用环境:CentOS 6.4  Windows7  tomcat7 主要原因是linux开启了防火墙,有两种解决方案,一种是关闭防火墙,另外一种是开放所要访问的端口 1.关闭防火墙(非常不建议) ...

  3. 部署到IIS上的网站打开时总是显示无法找到资源解决方案

    1.首先修改项目目录的访问权限:右键->属性->安全里面找到组名或用户名 ->编辑->添加一个用户取名everyOne并设置可以修改即可 2.然后在IIS下面,选中你的mvc项 ...

  4. 部署在IIS上的网站如何调试

    引言 今天突然有个朋友问我,总听同事说在IIS中如何如何调试,到底如何调试呢?没办法,人家刚入门,还是亲手给他操作了一遍.也记录一下,希望能帮到那些不知道的孩纸. IIS中的网站调试 调试最常见的一般 ...

  5. 小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

    前言: 我的后端项目是Java写的,用的Springboot框架.在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功. 不成功具体点说就是:域名地址可以正 ...

  6. Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器

    1.  规划 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155   htpps://auto.devcult.com 47.88.10.155 ...

  7. OkHttp配置HTTPS访问+服务器部署

    1 概述 OkHttp配置HTTPS访问,核心为以下三个部分: sslSocketFactory() HostnameVerifier X509TrustManager 第一个是ssl套接字工厂,第二 ...

  8. AWS中国区的那些“坑”

    前言 最近做的一个项目是要把公司在国外已经上线的一个物联网的项目移植到AWS中国区来. 由于AWS属于国外云产商,在中国运营,必须符合国家的相关规定: 必须是合资公司 (AWS北京区由北京光环新网运营 ...

  9. 从 HTTP 到 HTTPS - IIS 部署免费 HTTPS

    这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇文章与 博客园 和 Segmentfault 共享. 前端开发QQ群:3 ...

随机推荐

  1. Beta冲刺随笔——Day_One

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...

  2. Django----初始化项目结构

    1.初始化项目结构图 │ .gitignore # 提交git仓库时,不提交的文件必须要在这里进行标注 │ README.en.md # 英文(项目介绍) │ README.md # 中文项目简介 │ ...

  3. js如何动态创建一个新的标签

    var DS; DS = CallIVRAjaxClass.GetBranchCallCount().value; var obj = {}; obj.branch = "_branch&q ...

  4. Python【Python基础】

    python的使用 1.python的两个版本:python2.0与python3.0.这两个版本的区别在于python3是不向下兼容python2的组件和扩展的,但是在python2.6和2.7的两 ...

  5. npm常用操作

    Npm常用操作 1. 淘宝镜像 1.1 npm临时使用淘宝镜像安装依赖包 npm i -g express --registry https://registry.npm.taobao.org 1.2 ...

  6. John the Ripper快速密码破解工具简单使用

    在某场比赛中师傅们说需要用到该工具,学习之 题目给了我们一个流量包,分析 发现 .hint.php.swp文件 该文件是使用 vim 编辑文件时异常退出而产生的,可以通过 vim -r 文件名 进行相 ...

  7. java性能问题排查提效脚本工具

    在性能测试过程中,往往会出现各种各样的性能瓶颈.其中java常见瓶颈故障模型有cpu资源瓶颈:文件IO瓶颈:网络IO瓶颈:内存资源瓶颈:资源消耗不高程序本身执行慢等场景模型. 如何快速定位分析这些类型 ...

  8. AcWing 1194. 岛和桥

    \(f[s][i][j]\) 表示一条有向路径(不经过重复点),当前路径点集合为 \(s\),最后两个点是 \(j\) → \(i\) 的最大价值 \(g[s][i][j]\) 类似,不过是方案数. ...

  9. MySQL技术内幕InnoDB存储引擎(六)——锁

    什么是数据库的锁? 锁是数据库系统区别于文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.让数据库事务满足隔离性的要求. InnoDB 中锁的作用 不仅用于对数据进行并发访问,还还包括了缓冲 ...

  10. 深入理解Java虚拟机(二)——HotSpot对象创建、内存、访问

    对象的创建 虚拟机遇到一条字节码new指令时,开始对象创建过程. 首先去检查这个指令的参数是否能在常量池定位到一个类的符号引用: 检查这个符号引用代表的类是否已被加载.解析和初始化,如果没有就必须执行 ...