手里吃灰的域名越来越多,偶尔还是会拿来测试测试,每次手动配置证书就很麻烦,刚好最近Let's Encrypt Authority也由X3更新为了R3版本,使用了新的OCSP地址,解决了污染问题。(此处想说点什么,但还是算了QAQ)因此又用回acme.sh自动签发更新证书,官方有很详细的使用文档,这里只做简单记录方便自己查阅。

安装

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

若后面出现command not found,则需要手动执行以下命令:

source ~/.bashrc

生成证书

HTTP认证方式

该需要在你的网站根目录下放置一个文件,来验证域名所有权,完成验证后就可以生成证书了。

acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

只需要指定域名,并指定域名所在的网站根目录.acme.sh会全自动的生成验证文件,并放到网站的根目录,然后自动完成验证,完成后会自动删除验证文件,无需多余操作。

DNS认证方式

这里为了后面更新方便,选择通过Cloudflare的api验证,一般主流NS服务商都提供api接口,获取Cloudflare API,可以自己选择全局api还是单域api,我这里选择了单域api,获取到api后注意保存,然后导入:

export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxxxxxxxxxxxxx"

生成证书:

acme.sh --issue --dns dns_cf -d mydomain.com -d www.mydomain.com

若要生成通配符证书,则:

acme.sh --issue --dns dns_cf -d mydomain.com -d *.mydomain.com

证书生成后会将给出的api信息会被自动记录下来,将来在使用的时候就不需要再次指定了,直接生成:

acme.sh  --issue   -d  mydomain2.com   --dns  dns_cf

安装证书

默认生成的证书都放在安装目录下:~/.acme.sh/,建议使用--install-cert命令指定目标位置,将证书文件复制到相应的位置,这里用Nginx示例:

acme.sh --install-cert -d mydomain.com \
--key-file       /path/to/ssl/private.key  \
--fullchain-file /path/to/ssl/fullchain.pem \
--reloadcmd     "service nginx force-reload"

这里指定的所有参数都会被自动记录下来,并在将来证书自动更新以后,被再次自动调用,目前证书在60天以后会自动更新,无需任何操作。

若要删除一个证书,使用:

acme.sh --list
acme.sh --remove -d mydomain.com

更新acme.sh

升级acme.sh到最新版:

acme.sh --upgrade

开启自动升级:

acme.sh  --upgrade  --auto-upgrade

关闭自动更新:

acme.sh --upgrade  --auto-upgrade  0

Tags: SSL

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.