环境说明:
这种方案使用第三方证书,更适合有全站SSL需求。因为ACM上面申请的免费公有证书无法下载到服务器上使用,所以在某处的流量是要以http进行通信的。所以需要从第三方下载下来,上传到AWS ACM中进行使用,这样就可以搭配ELB和Cloudfront使用。这方案的缺点是证书无法自动续签,需要自己手动续签保持证书不过期不影响使用(最下面有参考链接)。这里使用Let’s Encrypt的免费证书进行试验,步骤相对简单仅供参考。
实验环境说明:
一个域名,一台EC2服务器(OS:Amazon Linux 2023(Fedora))使用nginx作为网页服务器
操作步骤:
第一步:下载安装nginx这里就不描述了
第二步:为 Nginx 设置服务器块
sudo vi /etc/nginx/conf.d/sameple.com.conf
server {
listen 80;
server_name xxx.com;
root /usr/share/nginx/html;
index index.html;
charset UTF-8;
}
第三步:设置下载安装certbot 官网:Certbot
原本Amazon Linux 2023系统是Fedora,但是软件库里面并没有snapd除非自己去加,所以这里采取pip更加通用的方式去做 ,根据官网的指示去做。
1.安装系统依赖项
sudo dnf install python3 augeas-libs
2.设置 Python 虚拟环境
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
3.安装 Certbot
sudo /opt/certbot/bin/pip install certbot certbot-nginx
4.准备 Certbot 命令
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
5.运行 Certbot
运行此命令以获取证书并让 Certbot 自动编辑您的 nginx 配置以提供服务,只需一步即可启用 HTTPS 访问。根据指示配置就好
sudo certbot --nginx
6.(可选)自动续订
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
第四步:在route53做一条A记录 ,输入EC2的公有IP地址
第五步:验证访问这样就完成了证书申请,实现https访问
参考链接:https://awswithatiq.com/how-to-install-nginx-in-amazon-linux-2023/
如果上传到aws acm 上续签问题解决的参考链接https://medium.com/@iamjasonchild/custom-ssl-certificate-with-letsencrypt-acm-route53-powered-by-certbot-e457614df6b8