本文以demo.example.com为例,详细介绍了使用acme.sh进行ssl申请和自动续约的方法html
只须要用任意用户执行nginx
curl https://get.acme.sh | sh
acme.sh 会安装到 ~/.acme.sh/
目录下,并建立新的自动计划(cronjob)在凌晨0点检查全部证书web
apache
或是nginx
服务器的状况acme.sh --issue -d <域名> --webroot <网站根目录> acme.sh --issue -d demo.example.com --webroot /home/wwwroot/demo.example.com/
yum install socat acme.sh --issue -d demo.example.com --standalone
首先得到认证须要的解析记录算法
acme.sh --issue --dns -d demo.example.com
而后在DNS服务商中添加记录
最后从新生成证书apache
acme.sh --renew -d demo.example.com
使用这种方式 acme.sh 将没法自动更新证书,每次都须要手动再次从新解析验证域名全部权。api
dns 方式的真正强大之处在于可使用域名解析商提供的 api 自动添加 txt 记录完成验证安全
首先须要在云上申请有DNS配置权限的帐号密码服务器
参考:
操做方法dom
在dnspod官网上申请
https://www.dnspod.cn/Login?r=/consolecurl
而后登陆远程服务器
export DP_Id="1234" export DP_Key="sADDsdasdgdsf" acme.sh --issue --dns dns_dp -d demo.example.com
参考:
操做方法
在阿里云官网登陆添加拥有DNS配置权限的子帐户 https://ram.console.aliyun.com/overview
而后登陆远程服务器
export Ali_Key="AccessKeyId" export Ali_Secret="AccessKeySecret" acme.sh --issue --dns dns_ali -d demo.example.com
默认生成的证书都放在安装目录下: ~/.acme.sh/
须要将证书“拷贝”到自定义位置,方便配置,这里的复制须要用acme.sh的自带工具用于往后自动更新
acme.sh --installcert -d demo.example.com \ --key-file /usr/local/nginx/ssl/demo_example_com.key \ --fullchain-file /usr/local/nginx/ssl/demo_example_com.cer \ --reloadcmd "/usr/local/nginx/sbin/nginx -s reload"
暂无
nginx 设置相似以下
server { listen 443 ssl; ssl on; ssl_certificate /usr/local/nginx/ssl/demo_example_com.cer; # 这里指向证书安装的位置 ssl_certificate_key /usr/local/nginx/ssl/demo_example_com.key; }
参考:https://mikemiao111.com/nginx%E5%A2%9E%E5%BC%BAhttps%E5%AE%89%E5%85%A8%E9%85%8D%E7%BD%AE/
nginx默认采用1024位的加密算法,若是须要的话可使用2048位的代替,这样可让加密更安全
首先生成 zjk_zoollcar_top.pem 文件到指定目录
openssl dhparam -out /usr/local/nginx/ssl/demo_example_com.pem 2048
而后在nginx配置文件中设置
server { listen 443 ssl; ssl on; ssl_certificate /usr/local/nginx/ssl/demo_example_com.cer; ssl_certificate_key /usr/local/nginx/ssl/demo_example_com.key; ssl_dhparam /usr/local/nginx/ssl/demo_example_com.pem; #新增 }
能够用下面的网站测试SSL安全性
https://www.ssllabs.com/ssltest/
目前因为 acme 协议和 letsencrypt CA 都在频繁的更新, 所以 acme.sh 也常常更新以保持同步.
升级 acme.sh 到最新版 :
acme.sh --upgrade
若是不想手动升级, 能够开启自动升级:
acme.sh --upgrade --auto-upgrade
以后, acme.sh 就会自动保持更新了.
你也能够随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0