主题:使用 Docker 基于 OHTTPS 申请免费 ssl 证书并自动更新证书有效期,支持泛域名,让网址支持 https 访问。
第一步:注册 OHTTPS
OHTTPS 注册地址:www.ohttps.com?invitationCode=5py6vrv11gvrnze1 地址含有邀请码,对注册用户没有任何影响!教程不易,如果不建议的话,请走博主的邀请注册!附上纯净地址:www.ohttps.com(PS:通过含有邀请码的链接注册赠送 1000 余额,不通过邀请码注册的赠送 500 余额)
第二步:OHTTPS 添加证书
注册后会自动进入添加证书的步骤,如果跳过了此步骤,可通过「证书管理」菜单 ➡️ 「创建证书」按钮进行添加。
注意事项:添加证书支持泛域名和指定域名,泛域名的意思是所有的域名如二级域名都可以使用该证书,指定域名则是指定的单个域名可以使用该证书。eg:*.wellz.top 是泛域名,添加此域名则 wellz.top 的任何域名都可以使用该证书,如 abc.well.top 等;abc.wellz.top 是指定域名,该证书只能该域名域名使用。
第三步:添加部署节点
通过「部署节点」菜单 ➡️ 「添加节点」进行部署节点添加。步骤如下:
- 选择类型
- 点击「添加节点」按钮
- 选择 Docker & Nginx (本文只介绍基于Docker Nginx的方式申请证书,如有其他需求,自行查看 OHTTPS 官方文档部署即可)
- 点击「生成令牌」按钮,然后点击「下一步」
- 关联证书
- 点击「点击添加关联证书」按钮,选择 [第二步] 中添加的证书,确定
- 点击「创建部署节点」即可
第四步:拉取基于 OHTTPS 的 Docker Nginx 镜像
docker pull ohttps/ohttps-nginx
第五步:创建 Dockerfile 文件和 nginx.conf nginx配置文件
- Dockerfile 文件内容如下:
FROM ohttps/ohttps-nginx
WORKDIR /etc/nginx
COPY ./nginx.conf /etc/nginx/nginx.conf
ENV PUSH_NODE_ID='替换为你的部署节点ID'
ENV PUSH_NODE_TOKEN='替换为你的令牌token'
- nginx.conf 文件内容如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/certificates/{你的证书ID}/fullchain.cer;
ssl_certificate_key /etc/nginx/certificates/c{你的证书ID}/cert.key;
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
}
第六步:基于 ohhts/nginx 构建 Docker Nginx 镜像
docker build -t oh_nginx .
第七步:启动构建的 oh_nginx
此处我是通过 docker-compose 来管理启动的,我个人的 docker-compose.yml如下,此处不做限制,可根据个人习惯用 docker 启动也可。
version: '3.8'
services:
oh_ngnix:
container_name: oh_nginx
image: oh_nginx:latest
restart: always
privileged: true
ports:
- 80:80
- 443:443
volumes:
- ./data/config:/etc/nginx
- ./data/logs:/var/log/nginx
- ./data/html:/usr/share/nginx/html
- /etc/localtime:/etc/localtime
network_mode: host
此处需要注意的是,如果你采用和我一模一样的 docker-compose.yml 文件,则需要复制一份 nginx.conf 到 ./data/config 下,否则启动会报错,因为我把 ./data/config 和 /etc/nginx 做了目录映射。 然后启动容器:
docker-compose up -d
第八步:nginx 配置证书
启动后,配置证书即可,此处不再赘述。
补充说明:服务计费规则
虽然 OHTTPS 虽然并非完全免费,但在注册后,会自动得到 500 的余额(通过含有邀请码的链接注册赠送 1000 余额,不通过邀请码注册的赠送 500 余额),这个数量的余额足以让您长期使用,且相较于购买全新的证书,更为经济。像tx云这类厂商虽然也提供免费证书,但他们并不支持泛域名。如果您有很多二级域名,那么就得提出相应数量的证书申请,这不仅不方便,管理起来也较为繁琐。由于 OHTTPS 为我带来了诸多便利,我决定写下这篇文章,希望能帮助和我有相似需求的人。但这也取决于个人需求,如果您发现本文对你有所帮助,而且你能从 OHTTPS 中受益,那么我将感到非常的荣幸!
最后,附上服务计费规则图: