oldme 博客

东隅已逝,桑榆非晚

记录网站启用 acme.sh 的过程

oldme create: 2024-02-20

因为网站的 SSL 证书快过期了,之前使用的是从阿里云申请的一年免费证书,但现在免费证书只有三个月了。为了一劳永逸解决 SSL 证书问题,我决定在服务器上部署 acme 客户端以自动申请 letsencrypt 证书。

环境

先介绍一下环境,我的网站是使用 docker 部署的,nginx 也运行在 docker 上,所以,部署 acme 也会使用 docker。

docker

docker-compose.yml:

version: "3"

services:
    nginx:
        image: "nginx"
        container_name: "nginx"
        restart: "always"
        ports:
            - "80:80"
            - "443:443"
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - "/home/docker/nginx:/etc/nginx"
            - "/home/wwwroot:/home/wwwroot"
        labels:
            - "docker-nginx"

    acme:
        image: "neilpang/acme.sh"
        container_name: "acme"
        restart: "always"
        environment:
        	- TZ=Asia/Shanghai
            - DEPLOY_DOCKER_CONTAINER_LABEL=docker-nginx
        volumes:
            - "/home/docker/nginx:/etc/nginx"
            - "/home/docker/acme/acme.sh:/acme.sh"
            - "/home/wwwroot:/home/wwwroot"
        command: "daemon"

部署证书

之后我创建了一个 sh 脚本,用于自动更新证书并重启 nginx,这里贴出脚本源码,可供参考:

#/bin/sh

docker exec -it acme acme.sh --register-account -m tyyn1022@gmail.com

// 申请证书
docker exec -it acme acme.sh --issue -d oldme.net --server letsencrypt --webroot /home/wwwroot/oldme-web/static
docker exec -it acme acme.sh --issue -d api.oldme.net --server letsencrypt --webroot /home/wwwroot/oldme-api
docker exec -it acme acme.sh --issue -d admin.oldme.net --server letsencrypt --webroot /home/wwwroot/oldme-admin

// 部署证书
docker exec -it acme acme.sh --install-cert -d oldme.net \
--key-file       /etc/nginx/ssl/oldme.net.key  \
--fullchain-file etc/nginx/ssl/oldme.net.pem

docker exec -it acme acme.sh --install-cert -d api.oldme.net \
--key-file       /etc/nginx/ssl/api.oldme.net.key  \
--fullchain-file etc/nginx/ssl/api.oldme.net.pem

docker exec -it acme acme.sh --install-cert -d admin.oldme.net \
--key-file       /etc/nginx/ssl/admin.oldme.net.key  \
--fullchain-file etc/nginx/ssl/admin.oldme.net.pem

docker restart nginx

自动更新

在系统定时任务里加入上述脚本即可。

评论

欢迎您的回复 取消回复

您的邮箱不会显示出来,*必填

本文目录