介绍
这里介绍 Let’s Encrypt
机构颁发的证书。
相关资料
Let’s Encrypt
官网:https://letsencrypt.org/zh-cn/getting-started/
acme.sh
教程:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
安装 acme.sh
curl https://get.acme.sh | sh
上述命行执行结束后,会在 ~/.acme.sh/
中生成相关的文件,并且会在 crontab
中自动添加一条每天凌晨执行的定时任务。
生成证书
语法:
acme.sh --issue -d 域名1 -d 域名2 --webroot 网站根目录
示例:
acme.sh --issue -d blog.zhangjianqiang.top --webroot /path/to/blog/
如果提示有错误,可以在命令后添加 --debug
来打印出详情的错信息
如果提示 curl
错误,可以在命令行后添加 --use-wget
,使用 wget
取代 curl
来下载文件
安装/复制证书
上述命令执行结束后,会在 ~/.acme.sh
目录下有一个与域名对应的文件夹,这里就是生成的相关证书文件,这个目录我们不便于直接使用最好把这些文件复制到 nginx
配制目录下(如果是别的服务器,复制到相应配置目录)
nginx
示例:
我自己平时用的都是 nginx
服务器,因此这里只展示一下 nginx
的相关操作,如果有用 apache
服务器或其它的,请参考上面的文档地址进行相关操作
acme.sh --installcert -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"
上面的命令,我在测试时发现 service nginx force-reload
命令没有,我这里使用了 service nginx reload
,后来我又重启了 nginx
也不太确定 service nginx reload
是否会刷新配置文件,如果你做完这些发现没有生效,那么请 重启 nginx
更新证书
在安装证书步骤已经自动为我们添加一条 crontab
计划任务,证书快到期时会为我们自动执行更新
nginx 配置
server
{
# 注意这里要这样写,我一开始写的 ssl on; 报错
listen 443 ssl;
server_name blog.zhangjianqaing.top ;
# 开始证书的相关配置
ssl_certificate /usr/local/nginx/conf/cert/blog.zhangjianqiang.top/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/blog.zhangjianqiang.top/key.pem;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 结束正常的相关配置
# 下面放自己的其它配置
}
acme.sh 更新
升级 acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.
你也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0