免费ssl证书生成及续订
1、安装 acme.sh,同时定时任务将自动添加一条任务
# 安装路径:~/.acme.sh/;注意修改邮箱
$ curl https://get.acme.sh | sh -s email=my@mydomain.com
或
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m my@mydomain.com
2、验证域名
# 通过网站根目录,域名需要能被访问,根目录需要可写权限
$ ~/.acme.sh/acme.sh --issue -d mydomain.com -w /var/www/html
# 通过 Nginx,域名需要能被访问
$ ~/.acme.sh/acme.sh --issue -d mydomain.com --nginx
# 手动 DNS 方式,这种方式无法自动更新证书
## 先执行 --issue,根据提示通过 云解析DNS 添加 TXT 解析记录
$ ~/.acme.sh/acme.sh --issue --dns -d *.mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
## 再次执行 --renew
$ ~/.acme.sh/acme.sh --renew -d *.mydomain.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
# 自动 dns 方式
## 以 dnspod 为例,你需要先登录到 dnspod 账号, 生成你的 api id 和 api key, 都是免费的。然后:
$ export DP_Id="<id>"
$ export DP_Key="<key>"
$ ~/.acme.sh/acme.sh --issue --dns dns_dp -d *.mydomain.com
# acme.sh 默认证书服务为 zerossl ,可通过 --server 参数修改
$ ~/.acme.sh/acme.sh --issue .... --server zerossl
# 或者
$ ~/.acme.sh/acme.sh --issue .... --server https://acme.zerossl.com/v2/DV90
# 或设置默认服务,设置后不带 --server 参数也将使用 letsencrypt 服务
$ ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
Short Name | ACME server URL | Usage Wiki |
zerossl | ||
letsencrypt | N/A | |
buypass | ||
sslcom | ||
3、将生成的证书文件移动到 nginx 或 apache 证书目录
# 使用安装命令将证书文件复制到对应的证书目录
## nginx
~/.acme.sh/acme.sh --install-cert -d *.mydomain.com
--key-file /etc/nginx/certs.d/mydomain.com.key
--fullchain-file /etc/nginx/certs.d/mydomain.com.pem
--reloadcmd "nginx -s reload"
## apache
~/.acme.sh/acme.sh --install-cert -d *.mydomain.com
--cert-file /etc/apache/certs.d/cert.pem
--key-file /etc/apache/certs.d/key.pem
--fullchain-file /etc/apache/certs.d/fullchain.pem
--reloadcmd "service apache2 force-reload"
4、配置证书
# 配置 ssl,以 nginx 为例,注意 ssl_certificate 使用的是 fullchain-file 对应文件
server {
listen 443 ssl;
ssl_certificate /etc/nginx/certs.d/mydomain.com.pem;
ssl_certificate_key /etc/nginx/certs.d/mydomain.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
# ...
}
5、证书续期,安装时已在系统中加入定时任务,每60天自动续订
# 旧的证书文件将直接被覆盖
$ ~/.acme.sh/acme.sh --renew -d mydomain.com
6、停止证书续期
# 该操作不会删除证书文件目录(~/.acme.sh/mydomain.com)
$ ~/.acme.sh/acme.sh --remove -d mydomain.com