使用acme.sh 申请ssl证书并续期

自从免费的https证书有效期由一年变成三个月之后,续期变得越来越麻烦了,而且免费证书还有次数限制,这就变得很尴尬,不过作为程序员肯定是有解决办法的

这次介绍的是“Let’s Encryp”

Let’s Encrypt 提供免费的DV(域名验证)SSL证书,由非营利性组织 Internet Security Research Group 提供支持。他们的证书可以通过自动化工具轻松获取,并且受到广泛认可。

https://letsencrypt.org/

这次要讲的acme.sh就是基于Let’s Encrypt生成免费的证书

官方文档:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

1、安装acme.sh,通过ssh登录服务器,这边推荐一款ssh软件:https://termius.com

mac下的话,推荐该链接 https://macwk.com.cn/soft/termius

将其中的”my@example.com”,改为自己的邮箱地址

curl https://get.acme.sh | sh -s email=my@example.com

2、安装完成后会在当前用户目录下生成.acme.sh目录,如下图所示。安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

3、安装完成后,会自动创建一个定时任务,用于自动更新快到期的证书,可通过”crontab -l”查看具体的内容

4、生成证书,acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证。此处讲解的是阿里云下基于dns验证方式。更多安装方式请查看该链接:https://github.com/Neilpang/acme.sh/wiki/How-to-install

5、dns验证方式的话,就是添加一条TXT记录,手动去添加一来过于麻烦而来还不支持自动更新。接下来介绍自动添加dns的方式

6、打开该阿里云链接:https://ram.console.aliyun.com/users,然后添加一个子账号,如下图所示。记得勾选”OpenAPI 调用访问”

7、完成后记得保存AccessKey ID、AccessKey Secret可通过下载csv文件进行保存,在后面的配置的时候需要用到

8、给该账号赋予”AliyunDNSFullAccess”权限,如下图所示。若出现需要验证的时候进行验证即可

9、将上面的AccessKey ID、AccessKey Secret配置到服务器下的该文件

10、编辑.bashrc文件

vim ~/.bashrc

11、追加如下内容

export Ali_Key="AccessKey ID"
export Ali_Secret="AccessKey Secret"

如下图所示,将其中的AccessKey ID、AccessKey Secret改为从阿里云后台下载的

12、编辑完成后记得刷新下,刷新命令

source ~/.bashrc

13、生成证书命令

acme.sh --issue --dns dns_ali -d itinfor.cn

若执行失败,可以追加 –force

acme.sh --issue --dns dns_ali -d element.java.snapid.cn --force

14、完成后会自动添加DNS记录、验证后会自动删除该DNS记录做到干干净净,然后生成的证书,由下图可见成功提示及证书所在目录

15、不建议将上面生成证书所在的目录作为nginx证书对应的目录,该目录结构有可能改变。将该证书拷贝到nginx证书所在目录系下,具体命令如下:

acme.sh --install-cert -d itinfor.cn \
--key-file /usr/local/nginx/conf/cert/itinfor.cn.key \
--fullchain-file /usr/local/nginx/conf/cert/itinfor.cn.pem \
--reloadcmd "service nginx reload --force"

 

/usr/local/nginx/conf/cert 以nginx证书所在目录为准

16、完成后打开对应的域名,点击域名左侧的图标查看证书详情

 

 

Tagged , ,