免费申请 SSL 证书并自动更新有效期

395 阅读3分钟

主题:使用 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 是指定域名,该证书只能该域名域名使用。 添加证书

第三步:添加部署节点

通过「部署节点」菜单 ➡️ 「添加节点」进行部署节点添加。步骤如下:

  1. 选择类型
    • 点击「添加节点」按钮
    • 选择 Docker & Nginx (本文只介绍基于Docker Nginx的方式申请证书,如有其他需求,自行查看 OHTTPS 官方文档部署即可)
    • 点击「生成令牌」按钮,然后点击「下一步」 添加部署节点-选择类型
  2. 关联证书
    • 点击「点击添加关联证书」按钮,选择 [第二步] 中添加的证书,确定
    • 点击「创建部署节点」即可 添加部署节点-关联证书

第四步:拉取基于 OHTTPS 的 Docker Nginx 镜像

docker pull ohttps/ohttps-nginx

第五步:创建 Dockerfile 文件和 nginx.conf nginx配置文件

  1. 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'

部署节点ID

  1. 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 中受益,那么我将感到非常的荣幸! 最后,附上服务计费规则图: 服务计费规则