ACME申请证书
网站需要使用HTTPS协议就需要申请SSL证书,一般证书可以在阿里云、腾讯云等平台购买;这里介绍一个免费的申请证书的方法ACME,ACEM是开源的以命令的形式来申请证书。
1.安装ACEM:
方法1:
curl https://get.acme.sh | sh -s email=my@example.com或者
wget -O - https://get.acme.sh | sh -s email=my@example.com方法2:
如果上面的方法下载不了的话可以使用git的方式;
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m my@example.com通过root用户安装好的acme会保存到
/root/.acme/中。
2.修改CA服务器:
acme.sh脚本默认CA服务器是ZeroSSL,这个服务器需要登陆而且只能申请3个免费的ssl证书,因此我们需要换成Let's Encrypt服务器,可以免费获取证书,但是证书只有3个月有效期;
acme.sh --set-default-ca --server letsencrypt3.申请阿里云的RAM访问控制:
1.创建用户

2.用户授权

3.添加appkey和secret
添加位置在/root/.acme.sh/account.conf文件

添加内容

4.申请证书:
acme.sh --issue -d mydomain.com --webroot /home/wwwroot/mydomain.com/-d:自己的域名,多个域名可以有多个-d,通配符使用-d *.mydomain.com;
–webroot:网站项目所在的根目录
申请好的证书会默认保存到/root/.acme.sh/下:

5.将证书复制到自定义目录
我们可以自定义目录将证书保存到我们定义的目录中,我这里定义的目录在/opt/ssl;
acme.sh --install-cert -d www.xiaolongwei.cn --key-file /opt/ssl/www.xiaolongwei.cn.key --fullchain-file /opt/ssl/fullchain.cer --reloadcmd "nginx -s reload"-d:域名;
–key-file:key文件要保存的位置;
–fullchain-file:cert文件保存的位置;
–reloadcmd:文件保存后执行的命令,一般用来重启服务。
注意:Nginx的配置项
ssl_certificate需要使用/etc/nginx/ssl/fullchain.cer,而非/etc/nginx/ssl/<domain>.cer否则https访问不了。
6.Nginx配置:

7.自动更新证书:
默认情况下,证书每60天更新一次,因此我们可以每两个月的25日保存一次证书,这个操作可以通过shell脚本实现;
定义脚本文件updateJb.sh:
#!/bin/bash
#备份旧目录
cp /opt/ssl/fullchain.cer /opt/ssl/bak/
cp /opt/ssl/www.xiaolongwei.cn.key /opt/ssl/bak/
#保存新的ssl文件
/root/.acme.sh/acme.sh --install-cert -d www.xiaolongwei.cn --key-file /opt/ssl/www.xiaolongwei.cn.key --fullchain-file /opt/ssl/fullchain.cer --reloadcmd "nginx -s reload"
#重启nginx
nginx -s reload配置定时任务:
命令crontab -e编辑定时任务:
0 0 25 */2 * /opt/ssl/updateJb.sh > /dev/null 2>&1以上操作我们就可以免费获取ssl证书,并且不用每3个月就手动申请一次了。
8.额外操作:
acme.sh --upgrade:升级 acme.sh 到最新版;
acme.sh --upgrade --auto-upgrade:开启自动升级;
acme.sh --upgrade --auto-upgrade 0:关闭自动升级;
acme.sh --info -d example.com:查看已安装证书信息。