# 又一款!免费的SSL,还能自动续期,支持CDN/OSS!

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

大家好,我是技术UP主小傅哥。

从今年开始,越来越多的云服务厂商开始限制了 ssl 1年期的申请,只提供3个月有效期并且限制数量申请。而购买一个 ssl 证书,一年都至少几千块。那没有 ssl 不行吗?🤔 如果你不害怕自己的小网站被嵌入流量污染变成小yellow广告网站,还是建议你加下 ssl!

当你手里有超过1个以上的域名,如 a.comb.com,之后你还对域名使用了多级域名部署不同的服务,如;api.a.comopenai.b.comblog.b.com 那么这个时候一种是对每个域名都申请 ssl 证书,另外一种就是购买更贵的泛域名,支持 *.a.com

除了对域名证书的申请还包括了这些域名证书的管理工作,你得知道他们什么时候到期,什么时候要更新。我见过有些互联网公司也有忘记更新域名的情况,从 https 跳转到了访问微信提示的页面。所以我需要一款 自动续期支持泛域名可视化所有证书时效性可配置CDN的一款工具!好在,我找到了!

# 一、产品介绍

https://httpsok.com/?p=4kMR (opens new window) - 让证书续期更简单,一行命令,轻松搞定SSL证书自动续期!这一款工具的老板,竟然认识小傅哥!😂

已亲自体验,确实挺好用!像傻瓜相机一样,贼简单。

# 二、ssl证书

# 步骤1;点击申请

# 步骤2;填写域名

# 步骤3;域名验证

# 步骤4;验证成功

# 步骤5;等待下发

# 步骤6;下载证书

  • 这里我们下载 Nginx 的,因为我们的服务是部署 Nginx 的。

# 三、域名配置

  • 配置域名解析,把你要使用的域名和云服务器配置上A记录。这样请求到域名的时候就会解析到服务器的IP了,以及对应的 Nginx 转发。

# 四、Nginx配置

# 1. 脚本工程

# 1.1 修改域名

server {
    listen       80;
    listen  [::]:80;
    server_name  ssl01.xiaofuge.tech;

    rewrite ^(.*) https://$server_name$1 permanent;

}

server {
    listen       443 ssl;
    server_name  ssl01.xiaofuge.tech;

    ssl_certificate      /etc/nginx/ssl/_.xiaofuge.tech.pem;
    ssl_certificate_key  /etc/nginx/ssl/_.xiaofuge.tech.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  • 首先,修改 ssl01.xiaofuge.tech 为你的域名。
  • 之后,修改 ssl 地址信息。这个地址是 docker-compose 映射的地址。如果你是 linux 直接安装,则可以直接使用 acme.sh 安装的时候生成的地址。
  • 注意,更多 Nginx 配置 https://bugstack.cn/md/road-map/nginx.html (opens new window)

# 1.2 修改证书

# 方式1

version: '3'
# docker-compose -f docker-compose.yml up -d
services:
  nginx:
    image: nginx:alpine
    container_name: nginx
    ports:
      - '443:443'
      - '80:80'
    volumes:
      - ./nginx/logs:/var/log/nginx
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf/conf.d:/etc/nginx/conf.d
      - ./nginx/ssl:/etc/nginx/ssl/
    privileged: true
    restart: always
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  • 脚本映射了 ssl、conf.d 等文件内容。

# 方式2

# 命令执行 docker-compose up -d
# docker-compose -f docker-compose-nginx.yml up -d
# 自动部署 https https://httpsok.com/doc/faq/docker-nginx.html
version: '3.9'
services:
  # yum install -y httpd-tools
  nginx:
    image: registry.cn-hangzhou.aliyuncs.com/xfg-studio/nginx:latest
    container_name: nginx
    restart: always
    ports:
      - '443:443'
      - '80:80'
    environment:
      HTTPSOK: https://httpsok.com/console/dashboard 写你的 token curl -s https://get.httpsok.com/ | bash -s 【这里的值】
    volumes:
      - ./nginx/logs:/var/log/nginx
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf/conf.d:/etc/nginx/conf.d
      - ./nginx/ssl:/etc/nginx/ssl/
    privileged: true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 2. 上传文件

  • 配置信息全部修改后,上传到你的云服务器上。

# 3. 执行脚本

[root@lavm-aatjb98slj httpsok]# docker-compose up -d
[+] Running 1/1Container nginx  Started    
1
2
3

# 五、访问验证

  • 访问地址;https://ssl01.xiaofuge.tech/https://ssl02.xiaofuge.tech/ 验证证书是否部署成功。
  • 如图,验证结果符合预期。

# 六、自动部署

这个自动部署非常重要,有了它我们就不用操心是什么时候过期,手动处理了!

如果执行 crontab -l缺失命令,则按照下面安装;

  1. 进入容器【确保你的Nginx名称是nginx,如果是Nginx更换下】:

    docker exec -it nginx /bin/bash
    
    1
  2. 编辑 /etc/apt/sources.list 文件。你可以使用 nanovim,如果这些编辑器没有安装,可以使用 echocat 命令手动编辑。例如:

    echo 'deb http://deb.debian.org/debian bookworm main' > /etc/apt/sources.list
    echo 'deb http://security.debian.org/debian-security bookworm-security main' >> /etc/apt/sources.list
    echo 'deb http://deb.debian.org/debian bookworm-updates main' >> /etc/apt/sources.list
    
    1
    2
    3
  3. 安装 cron

    apt-get update
    apt-get install -y cron
    
    1
    2

# 1. 获取脚本

# 2. 执行脚本

  • 从 Docker Portainer 中的 Nginx 进入执行脚本。
  • 如果提示 crontab not exits 可以执行 crontab 安装。

# 3. 安装查看

  • 如上表示自动部署正常,当证书剩余15天过期后,会自动部署。

  • 服务器查看

    root@9c0f0d45b3e6:/# crontab -l
    50 11 * * * '/root/.httpsok/httpsok.sh' -m -r >> '/root/.httpsok/httpsok.log' 2>&1
    
    1
    2

# 4. 证书监控

  • 这里还能看到每个证书剩余的有效期,还可以看到是哪个IP的服务器在使用。