• 作者:老汪软件技巧
  • 发表时间:2024-09-24 11:03
  • 浏览量:

前言:‌SSL免费证书的有效期从2024年4月底开始从12个月缩短至3个月。对于使用免费SSL证书的中小企业或者个人开发者而言,每三个月去手动部署一次证书文件很容易遗忘,从而导致服务器接口或者网站访问异常,今天把基于阿里云一套自动更新的流程详细写出来。

本系统环境基于阿里云Alibaba Cloud Linux 2.x或3.x LTS 64位(Linux内核本部 kernel 5.10 LTS)

中间件是阿里的tengine(nginx也一样,tengine是在nginx基础上优化的,所有配置文件与nginx一样,不去调优配置文件也比原有的nginx性能提升很多),基于Let‘s Encrypt生产免费的证书。

第一步:安装tengine/nginx (已安装的跳过,直接看第二步)1、 去官网首页下载压缩包,上传服务器/mnt目录下(目录不固定,自己喜好来)

tar -zxvf tengine-3.1.0.tar.gz //解压压缩包
cd tengine-3.1.0 //切到解压后的目录下
sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel //安装依赖包
./configure   //这里默认安装在/usr/local/nginx目录下,需要指定目录 --prefix==/你的/自定义/路径
sudo make install //编译安装

2、在 /etc/systemd/system/ 目录下创建一个名为nginx.service的文件【下方文本内容里的路径是默认路径,实际可根据前面你自定义的--prefix路径设置】

Description=Tengine HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

3、执行下面命令,重新加载systemd配置以使新服务文件生效

sudo systemctl daemon-reload

4、用vim编辑/usr/local/nginx/conf/nginx.conf文件,server_name域名用自己的替代,这里需要记住证书的路径,后面自动更新证书需要对得上

proxy_cache_path /home/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
server {
    #SSL 访问端口号为 443
    listen 443 ssl;  
    #填写绑定证书的域名
    server_name ~^(?.+)\.**\.com$;
    #证书文件名称
    ssl_certificate 	/home/ssl/fullchain.pem; 
    #私钥文件名称
    ssl_certificate_key 	/home/ssl/key.pem; 
    ssl_session_timeout 10m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
}
server {
	listen       80; 
	listen       [::]:80;
	server_name ~^(?.+)\.**\.com$; 
     return  301 https://$server_name$request_uri;
}

5、至此nginx安装配置完成,贴出相关命令

#nginx的运行状态

systemctl status nginx

#启动nginx服务

systemctl start nginx

#停止nginx服务

systemctl stop nginx

#重启nginx服务

systemctl restart nginx

#重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)

systemctl reload nginx

#验证配置文件是否正确

nginx -t

第二步、申请阿里云的密钥,授权DNS管理

登录阿里云,鼠标放到右上角,如图

点击用户名,进入权限设置页面

至此阿里云的权限账号分配,保存好密钥,下面会用到

第三步、安装Let‘s Encrypt下载 /acmesh-offi…上传到/home目录下解压 (目录不固定,自己喜好来)

tar -zxvf acme.sh-master.tar.gz

cd命令切到解压的目录下开始安装,-m是邮箱,写自己的邮箱

./acme.sh --install -m ***@qq.com

查看acme.sh版本

acme.sh --version 

添加bash命令,编辑配置文件填入申请的阿里云密钥

alias acme.sh=~/.acme.sh/acme.sh   //添加acme bash命令
vi .bashrc  //添加阿里云秘钥
source .bashrc //刷新生效

Ali_Key="***" //这里换成上面申请的AccessKey ID

Ali_Secret="***" //这里换成自己的AccessKey Secret

如果没有添加成功,可以在root/.acme.sh目录下,手动添加

找到/root/.acme.sh/account.conf,把SAVED_Ali_Key和SAVED_Ali_Secret换成自己申请的

ACCOUNT_EMAIL='***'
UPGRADE_HASH='='***''
SAVED_Ali_Key='***'
SAVED_Ali_Secret='***'
USER_PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'

acme.sh --issue --dns dns_ali -d **.com -d www.**.com --keylength ec-256

安装到nginx目录(注意证书的路径,需要和前面nginx配置的路径一致)

acme.sh --install-cert -d www.**.com --key-file /home/ssl/key.pem --fullchain-file /home/ssl/fullchain.pem --reloadcmd "systemctl restart nginx"

以上域名部分换成自己的

在/mnt目录下创建renew_ssl.sh,给予执行权限 chmod 777 文件名

#!/bin/bash
# 设置 acme.sh 的路径和 home 目录
ACME_SH="/root/.acme.sh/acme.sh"
ACME_HOME="/root/.acme.sh"
# 执行 acme.sh 命令进行证书续签
$ACME_SH --cron --home $ACME_HOME > /dev/null

新增定时任务,添加定时任务,每天凌晨1点去申请证书

crontab -e

0 1 * * * /mnt/renew_ssl.sh

至此证书自动颁发完成,需要注意 acmesh-official签发的证书有效期为60天,如果本地没过期并不会去重新申请,也不会执行systemctl restart nginx


上一条查看详情 +五个你需要知道的Git的使用技巧
下一条 查看详情 +没有了