
升级 https 记录
长久以来,小站都是以 http 方式裸奔,虽然不是生产环境,仅用于个人学习测试,但每次看到浏览器的“不安全”提示都感到不爽。考虑到本人怎么说也是讲究人,也不能太草率了,还是加个证书,做成 https 的吧,其实也很简单,就是太懒了😂。以下记录过程:
申请证书
用到的网站
非常方便,微信登录即可,免费用户也有 3 张证书的申请额度,官方文档非常详细,就是手把手教
填入域名,在服务商处配置 CNAME 记录,完成域名验证即可。证书厂商建议用谷歌的,对 chrome 浏览器支持更好,提交申请后等 1-2 分钟证书申请好了,这时候可以将证书下载保存在本地,一共两个文件,一个.pem
文件,一个.key
文件
使用 docker重新配置nginx
建立nginx工作目录
在服务器 root 用户的家目录下创建nginx-docker
文件夹作为 nginx的工作目录,下设三个目录html
、conf
、certs
- html目录:作为站点根目录,用于挂载
/usr/share/nginx/html
- conf 目录:nginx 的配置目录,用于挂载
/etc/nginx/conf.d
- certs 目录:存放证书的目录,用于挂载
/etc/nginx/certs
编写nginx配置文件
在 conf 目录下新建 nginx.conf 文件,内容如下:
1 | server { |
编写docker-compose.yml文件
在 nginx-docker文件夹下新建docker-compose.yml
文件,内容如下:
1 | services: |
这里需要注意一下:docker 镜像选择 alpine 版的,会自带 crontab,方便后续运行自动续签命令,官方原版的 nginx 是 debian 的,没有 crontab,还要自己装
将之前申请好的证书(pem和key文件)上传到certs目录
运行容器,万事大吉
1 | docker-compose up -d |
到这一步,实际上 https 就已经配置好了,但是证书期限只有 90 天,为了以后不要再为证书的事操心,下面需要配置自动续签
配置证书自动续签
进入容器
docker exec -it nginx sh
检查并启动
cron
定时任务1
ps aux | grep -v grep | grep cron || (echo "start cron..." && crond && echo "cron started")
运行自动续签命令
1
curl -s https://get.httpsok.com/ | sh -s xxxxx
这里的 xxxxx是 httpsok 提供的密钥,上述命令的完全内容在这里查看:
如果结果为下图,说明已经运行成功:
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自北落师门's Blog