问题描述

最近一个项目需要通过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上的网站的更多相关文章

  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. [自学] MIT的EECS本科+研究生课程【持续更新中-2020.06.02】

    前言 我的本科是读的电子信息工程,研究生跟着老师做项目,参与到深度学习中来,毕业后做了算法工程师,工作之后愈发发现,不论从事什么岗位,基础都很重要,但现在也没有时间再读一遍本科了,自学的话也不知道从何 ...

  2. 【知识点】C/C++编码规范

    为了提高我们写的代码的可读性,本文章说一下C/C++的编码规范. 一.源文件头部的注释 /******************************************************* ...

  3. UML第二次作业(代码互评)

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...

  4. Abp(net core)+easyui+efcore实现仓储管理系统——出库管理之七(五十六)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...

  5. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件操作控制类属性movable和tabsClosable介绍

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget的操作控制类属性包括movable.tabsClosable这两个. 1. mo ...

  6. web安全~文件包含总结

    文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大 ...

  7. Java基础学习之流程控制语句(5)

    目录 1.顺序结构 2.选择结构 2.1.if else结构 2.2.switch case结构 3.循环结构 3.1.while结构 3.2.do while结构 3.3.for结构 3.3.1.普 ...

  8. 【题解】「UVA681」Convex Hull Finding

    更改了一下程序的错误. Translation 找出凸包,然后逆时针输出每个点,测试数据中没有相邻的边是共线的.多测. Solution 首先推销一下作者的笔记 由此进入>>> ( ...

  9. 题解-SHOI2005 树的双中心

    SHOI2005 树的双中心 给树 \(T=(V,E)(|V|=n)\),树高为 \(h\),\(w_u(u\in V)\).求 \(x\in V,y\in V:\left(\sum_{u\in V} ...

  10. Pycharm github登录 Invalid authentication data. Connection refused.

    在github.com前加上 https:// 注意登录时使用的是用户名不是邮箱