acme申请免费SSL证书,泛域名证书,多域名证书
acme.sh可以通过acme协议生成Let’sEncrypt或者ZeroSSL颁发的免费SSL证书,目前acme.sh默认使用的是ZeroSSL颁发的证书
acme.sh可以通过acme协议生成Let’s Encrypt或者ZeroSSL颁发的免费SSL证书,目前acme.sh默认使用的是ZeroSSL颁发的证书
这两者证书如何选择呢?绝大部分情况下两者没有什么本质差别,一般情况下选择letsencrypt即可。但是如果出现以下情况时,建议选择zerossl:
1、需要支持老旧设备。
2、letsencrypt申请受阻。
至于说两者的安全性,对于非银行电商类的网站来说,这点一般不需要考虑。一般的电商网站也是可以使用的。当然,你有足够的预算,可以购买OV和EV的证书。
acme安装
安装环境CentOS7.9
curlhttps://get.acme.sh | sh
或者
wget-O - https://get.acme.sh | sh
如果使用root用户进行安装,会生成文件夹.acme.sh。
文件夹地址:/root/.acme.sh
acme.sh提供了两种方式进行验证域名所有权,一种是通过HTTP API,另一种是通过DNS API
- HTTP API通过修改Apache和NGINX配置,在根目录添加文件, 通过域名可以访问到该文件,验证成功。
- DNS API 通过云服务商提供的API(需要云服务商支持),在DNS添加一条TXT解析记录,添加成功则验证通过。国内的云服务比如jdcloud,Aliyun,DNSPod都可以使用这种方式。如果云服务商不在支持的列表里,可以使用腾讯云的DNSPod作为域名解析。
证书申请
本文中使用的域名是在阿里云托管的,所以设置部分使用阿里云
设置访问阿里云的验证key
注:此处的APPID 和APPkey为我们从阿里云RAM中获取的,用来验证DNSexportAli_Key="Key_XXX"exportAli_Secret="Secret_XXX"
acme.sh默认使用的是ZeroSSL作为CA
第一次使用,需要先注册一个acme账号
acme.sh--register-account-m<my@example.com>
my@example.com替换为自己的邮箱
申请证书
acme.sh--issue--dnsdns_ali-d<abc.cn>-d<"*.abc.cn" >-d<"*.efg.cn" >
可以同时申请单域名,泛域名和不同域名
申请成功会在.acme.sh文件夹下面,生成abc.cn文件夹 ,并且证书会存储在文件夹下
注意: 证书申请过程较慢,大概会持续3~5分钟左右,速度取决于网络以及DNS生效时间
证书安装(本文使用nginx作为web服务器)
acme.sh--install-cert -d \ --key-file /etc/nginx/ssl/key.pem \--fullchain-file /etc/nginx/ssl/cert.pem \--reloadcmd " /usr/local/nginx/sbin/nginx -s reload"
注意: 如果不使用install-cert命令进行安装,证书更新之后还是被保存在默认目录,会导致已有证书过期之后无法被自动更新
证书配置
证书配置部分请参考nginx或者apache的ssl配置方法
证书更新
acme 申请的ssl证书默认有效期是90天,acme.sh安装过程中会添加crontab计划任务,每天自动检测所有证书是否需要更新 (acme.sh会在证书失效之前进行自动更新)。查看定时任务,可以使用如下指定进行查看
crontab-l
也可以手动对证书进行强制更新
"/root/.acme.sh"/acme.sh --cron --home"/root/.acme.sh"--force