从Let’s Encrypt获取免费的HTTPs证书

Let’s Encrypt也是一个 CA 机构,但这个 CA 机构是免费的,官方推荐的是使用Certbot,但是个人感觉那个工具配置有点儿繁琐,对于阿里云DNS支持不好(也可能是自己不会用),这次介绍一下另外一个工具,github:https://github.com/Neilpang/acme.sh

1:安装

curl  https://get.acme.sh | sh

2:生成证书

认证方式分为http和DNS两种

http验证

http验证需要在服务器上进行,因为nginx、apache、80端口验证这些有自动化操作在本地执行,待申请到证书后,nginx、apache需要手动配置一下。

//apache or nginx:使用这两种服务器,acme.sh可以自动修改配置完成验证,最后再恢复配置,前提是申请证书的这个域名需要在这两种服务器中有配置
acme.sh --issue  -d mydomain.com   --apache
acme.sh --issue  -d mydomain.com   --nginx
//根目录:acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后删除验证文件
acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/
//80端口:如果服务器没有网站,80端口是空闲的,acme.sh也可以自己临时充当web服务器验证
acme.sh  --issue -d mydomain.com   --standalone
DNS验证

DNS的强大之处在于不需要任何服务器, 不需要任何公网ip,同时支持通配符,这里不介绍手动添加txt 记录完成验证的方式,那种方式比较麻烦,这里介绍阿里云自动验证的方式。
首先要在阿里云配置accesskey,登陆阿里云,在点击我的->accesskeys->创建AccessKeys->得到AccessKey ID和Access Key Secret

//1:配置阿里云账号
vim .acme.sh/account.conf
//添加key和secret
#LOG_FILE="/home/xx/.acme.sh/acme.sh.log"
#LOG_LEVEL=1

#AUTO_UPGRADE="1"

#NO_TIMESTAMP=1
SAVED_Ali_Key='xxxxxx'
SAVED_Ali_Secret='xxxxxx'
USER_PATH='/sbin:/bin:/usr/sbin:/usr/bin'

//2:通过阿里云DNS自动获取通配符证书
.acme.sh/acme.sh  --issue --dns dns_ali -d '*.mydomain.cn'

3:七牛云的https配置

fullchain 是内容,domain.key 是私钥

4:实例

acme更新https证书

// 一起搞两个域名通配符
acme.sh --issue --dns dns_ali -d mydomain.com -d '*.mydomain.com' -d mydomain2.com -d '*.mydomain2.com'
sudo cp /home/xxx/.acme.sh/mydomain.com/mydomain.com.cer /srv/ssl/mydomain.com/
sudo cp /home/xxx/.acme.sh/mydomain.com/mydomain.com.key /srv/ssl/mydomain.com/
sudo cp /home/xxx/.acme.sh/mydomain.com/fullchain.cer /srv/ssl/mydomain.com/

测试是否更新成功

echo | openssl s_client -servername mydomain.com -connect mydomain.com:443 2>/dev/null | openssl x509 -noout -dates

你可能感兴趣的:(从Let’s Encrypt获取免费的HTTPs证书)