http升级https全流程(踩坑指南
2024-3-18|2024-3-18
Anthony
type
status
date
slug
summary
tags
category
icon
password
好久好久好久没写文了啊🤐,语言组织都不利索了
场景
今天负责将自己做的项目从http升级到https,原因是写的软件从我的网页上下载天天被谷歌说有毒😅😅。先来说说基本的技术背景:
- 阿里云ECS建站,OSS文件系统,启用CDN加速传输
- 网站已经备案,但没有SSL证书
- 后端用的docker compose, nginx做转发
所以我们需要做的就是:
- 搞个证书(最好不要钱)
- 然后部署到服务器上去(烦得要死)
- 最后还要调试oss和cdn
其实网上一大堆教程了,但我觉得我就是做到一个事无巨细吧,网上很多东西都不讲原因,有些坑也没有说(踩死我了)
SSL证书
购买
首先打开高端的阿里云数字证书管理服务控制台,来白嫖一个证书


创建
点击创建证书

填写你的域名,其他如图就可以了

接下来就是信息验证,首先要在阿里云的DNS添加验证记录,按照图里的走就是了

添加记录
注意主机记录一定是_dnsauth,记录值就是刚刚申请时候那一长串的东西

如果DNS信息验证正确的话就ok了,等个10分钟签发 ☕
服务器配置
貌似阿里云是有自动部署的选项的,但我感觉自动部署其实也要配一些东西,还不如亲自来,理解得透彻
证书下载
回到证书控制台,点击下载

我的是nginx就选择nginx

下载完之后会得到一个压缩包,里面就是域名.pem 和 域名.key
然后直接scp到服务器上。
文件要放到服务器的哪
先来看看我的服务器文件结构,mariadb,minio,nginx,tooth都是我放docker服务的位置(不是说docker在这里运行,而是docker的原始东西在这里)

然后看我的docker-compose.yaml。
ports的意思就是发到服务器的xx端口要转成docker的xx端口,所以就是80转80,443转443(443一般就是用来做https)
volumes就相当于是docker的-v命令,也就是说服务器上的xx目录,应该会放到docker容器的xx目录上(理解这个很重要!)在我这里就是服务器的nginx目录会转为docker的/etc/nginx目录。(就是说东西直接搬过去)
ps:当时理解这个volums真的费了好大劲QAQ
所以我选择在服务器的nginx目录下新建一个ssl夹子(这样我就知道这是干嘛的了)然后把key和pem放进去

配置nginx.conf
尤其注意的就是certificate的位置,一定从容器的根目录开始
重启docker
docker compose restart
重启一下服务然后
docker logs nginx -f --tail=50
查看前50个logs和监听,方便debug配置阿里云
OSS
因为是公有文件,所以在oss中开启https

CDN
去CDN控制台,开https证书,一定要开!!因为oss配置了cdn加速

然后就大功告成啦,再也不报毒了哈哈哈哈哈哈