网页申请
有大量的第三方平台可以申请免费的 SSL 证书,例如一直在用的阿里云:一个账号一年可以申请 20 个,无论对于公司还是个人都足够了。
自助管理
如果网站不是部署在阿里云,那么设置证书以及续期操作起来就有点麻烦,特别是网站巨多(成百上千)的情况
宝塔
如果是普通的建站(PHP-FPM 或者静态网站),宝塔面板挺好用的
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 生成免费的证书
安装脚本
curl https://get.acme.sh | sh -s email=my@yuwei.cc
普通用户和 root 用户都可以安装使用,安装过程进行了以下几步:
- 把 acme.sh 安装到你的 home 目录下:
~/.acme.sh/
,并创建 一个 bash 的 alias,方便你的使用:alias acme.sh=~/.acme.sh/acme.sh
- 自动为你创建 cronjob,每天 0:00 点自动检测所有的证书,快过期了会自动更新证书
生成证书
acme.sh 实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证http
需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了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 解析记录,验证域名所有权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 或者其他服务#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 天以后会自动更新,无需任何操作更新脚本
#开启自动更新
acme.sh --upgrade --auto-upgrade
#关闭自动更新
acme.sh --upgrade --auto-upgrade 0
acme.sh --upgrade
Certbot
https://certbot.eff.org/安装脚本
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
./certbot-auto --help