证书常用位置及权限设置,以及用脚本更新阿里云域名(ddns)。

letsencrpyt

创建相关文件夹并设置权限

不建议直接放到/etc/ssl文件夹,因为letsencrypt三个月就要改一次,而此处是设计放置长期证书的。这里以apache为例,若是nginx则可在/etc/nginx下新建。

1
2
3
4
5
6
sudo mkdir /etc/apache2/ssl
sudo mkdir /etc/apache2/ssl/private
sudo chmod 755 /etc/apache2/ssl
sudo chmod 710 /etc/apache2/ssl/private
sudo chown -R root:root /etc/apache2/ssl/
sudo chown -R root:ssl-cert /etc/apache2/ssl/private/

用acme.sh自动签发ssl证书

下载脚本。

1
2
sudo su
curl https://get.acme.sh | sh

设置阿里云域名相关API。

1
2
export Ali_Key="AccessKeyId"
export Ali_Secret="AccessKeySecret"

以DNS API模式通过验证。

1
acme.sh --issue --dns dns_ali -d example.com

安装证书。

1
2
3
4
acme.sh --installcert -d example.com
--key-file /etc/apache2/ssl/private/example.com.key
--fullchain-file /etc/apache2/ssl/fullchain.cer
--reloadcmd "service apache2 force-reload"

卸载

1
acme.sh --uninstall

动态域名ddns

如果公网IP定期改变,则需定时去域名管理处更新IP。
切换为root并下载脚本。

1
2
3
sudo su
cd ~
wget https://raw.githubusercontent.com/h46incon/AliDDNSBash/master/ali_ddns.sh

官方教程编辑ali_ddns.sh
启用并设置定时任务cron

1
2
/etc/init.d/cron enable
crontab -e

在编辑器中添加一行。

1
*/5 * * * * /bin/bash /root/ali_ddns.sh

其中*依次为每分,每小时,每天,每月,每星期几。此处设置为每5分钟检查一次IP,有改变则上报域名管理更新记录。

caddy

用caddy则比较轻松,会根据CaddyFile中的设置为每个域名自动签发和更新证书,这里仅记录下签发证书的位置。

1
2
/root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/example.com/example.com.crt
/root/.caddy/acme/acme-v02.api.letsencrypt.org/sites/example.com/example.com.key

参考资料

https://github.com/Neilpang/acme.sh/wiki/说明
https://github.com/Neilpang/acme.sh/wiki/Options-and-Params
https://github.com/h46incon/AliDDNSBash#使用方法
http://man7.org/linux/man-pages/man5/crontab.5.html