网页申请

有大量的第三方平台可以申请免费的 SSL 证书,例如一直在用的阿里云:一个账号一年可以申请 20 个,无论对于公司还是个人都足够了。

自助管理

如果网站不是部署在阿里云,那么设置证书以及续期操作起来就有点麻烦,特别是网站巨多(成百上千)的情况

宝塔

如果是普通的建站(PHP-FPM 或者静态网站),宝塔面板挺好用的

1
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh forum

自搭

但是架不住量多,而宝塔的自动续期有时候会出问题,这时候就得有一个可以批量申请、续期的命令行工具

acme.sh

acme.sh 实现了 acme 协议,可以从 letsencrypt 生成免费的证书

安装脚本

1
curl  https://get.acme.sh | sh -s email=my@yuwei.cc

普通用户和 root 用户都可以安装使用,安装过程进行了以下几步:

  1. 把 acme.sh 安装到你的 home 目录下:~/.acme.sh/,并创建 一个 bash 的 alias,方便你的使用:alias acme.sh=~/.acme.sh/acme.sh
  2. 自动为你创建 cronjob,每天 0:00 点自动检测所有的证书,快过期了会自动更新证书

    生成证书

    acme.sh 实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证
    http
    需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了
    1
    2
    3
    4
    5
    6
    7
    acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/
    #apache
    acme.sh --issue -d mydomain.com --apache
    #nginx
    acme.sh --issue -d mydomain.com --nginx
    #如果没有运行任何 web 服务,80 端口是空闲的,那么 acme.sh 还能假装自己是一个webserver,临时听在80 端口
    acme.sh --issue -d mydomain.com --standalone
    DNS
    手动在域名上添加一条 txt 解析记录,验证域名所有权
    1
    2
    3
    4
    acme.sh  --issue  --dns   -d mydomain.com \
    --yes-I-know-dns-manual-mode-enough-go-ahead-please
    acme.sh --renew -d mydomain.com \
    --yes-I-know-dns-manual-mode-enough-go-ahead-please

    部署证书

    到 nginx/apache 或者其他服务
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #Apache
    acme.sh --install-cert -d example.com \
    --cert-file /path/to/certfile/in/apache/cert.pem \
    --key-file /path/to/keyfile/in/apache/key.pem \
    --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
    --reloadcmd "service apache2 force-reload"
    #nginx
    acme.sh --install-cert -d example.com \
    --key-file /path/to/keyfile/in/nginx/key.pem \
    --fullchain-file /path/to/fullchain/nginx/cert.pem \
    --reloadcmd "service nginx force-reload"

    更新证书

    目前证书在 60 天以后会自动更新,无需任何操作

    更新脚本

    1
    2
    3
    4
    5
    #开启自动更新
    acme.sh --upgrade --auto-upgrade
    #关闭自动更新
    acme.sh --upgrade --auto-upgrade 0
    acme.sh --upgrade

    Certbot

    https://certbot.eff.org/

    安装脚本

    1
    2
    3
    wget https://dl.eff.org/certbot-auto
    chmod a+x ./certbot-auto
    ./certbot-auto --help