首页 > 系统相关 >Let‘s Encrypt基于阿里云Linux服务器搭建自动更新免费的SSL证书

Let‘s Encrypt基于阿里云Linux服务器搭建自动更新免费的SSL证书

时间:2024-09-24 21:52:02浏览次数:11  
标签:Encrypt acme nginx -- SSL sh usr 自动更新 ssl

前言:‌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、https://tengine.taobao.org 去官网首页下载压缩包,上传服务器/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 ~^(?<subdomain>.+)\.**\.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 ~^(?<subdomain>.+)\.**\.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

下载 https://codeload.github.com/acmesh-official/acme.sh/tar.gz/master
上传到/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

标签:Encrypt,acme,nginx,--,SSL,sh,usr,自动更新,ssl
From: https://blog.csdn.net/hao2019/article/details/142480711

相关文章

  • 【C语言】使用 OpenSSL 进行 AES CBC 加密与解密
    使用OpenSSL进行AESCBC加密与解密在这篇文章中,我们将使用OpenSSL库实现AESCBC模式的加密和解密功能。AES(高级加密标准)是一种对称加密算法,广泛应用于数据保护。本示例展示了如何使用PKCS#7填充标准来处理明文的长度,以及如何确保在加密和解密过程中正确管理密钥......
  • 阿里云函数计算自定义域名的SSL证书免费全自动申请及部署
    ####(本人现在只做了证书部署,自动任务可以执行但是所生成的记录值没办法自动在阿里云的域名解析列表中更新,因此查到这篇文章,但发现太麻烦……又感觉以后一定会用到,所以先转载保存记录一下,原文地址:https://developer.aliyun.com/article/1475347)阿里云函数计算大大简化了开发部......
  • 2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数
    2024-09-14:用go语言,给定一个正整数数组nums,定义一个加密函数encrypt(x),其将一个整数x的每一位数字都替换为x中的最大数字,然后返回加密后的数字。例如,encrypt(523)会返回555,encrypt(213)会返回333。现在需要计算数组中所有元素加密后的和,然后返回这个和。输入:nums=[10,2......
  • 一行命令,一分钟轻松搞定SSL证书自动续期
    httpsok是一个便捷的HTTPS证书自动续签工具,专为Nginx服务器设计。已服务众多中小企业,稳定、安全、可靠。现在的网站SSL免费证书有效期只有3个月,所以就会有经常更快SSL证书的需求,如果手上需要更换的SSL证书比较多的情况下,那么这将是一个比较繁琐的过程,首先需要挨个去申......
  • 直接通过修改二进制文件OpenSSH和OpenSSL的版本为最高版版本来达到形式主义等保要求的
    文章开头的解释和说明本篇文章是通过形式上修改二进制文件中的版本号来达到某些像行尸走肉机器人类形式主义要求的等保标准要求,来完成其要求的“安全加固”。我先吐槽一下,这些形式主义等保标准要求,只按照版本号比对来确定是否为最版本的检测逻辑来批量扫描,扫描出来的漏洞误报率......
  • kettle从入门到精通 第八十六课 ETL之kettle kettle调用https接口忽略SSL校验
     1、在使用kettle调用接口的时候不可避免要调用http或者https接口,调用http接口kettle可以正常工作,但是遇到https接口的时候kettle就会提示证书有误,无法正常调用接口,今天咱们一起通过自研插件的方式来解决这个问题。自研插件需要有一定的java基础,git上有比较多的例子,本次不讲解如......
  • ssl证书
    nginx配置方案一server{listen443ssl;listen7002ssl;listen9876ssl;listen[::]:443defaultipv6only=on;listen[::]:7002defaultipv6only=on;listen[::]:9876defaultipv6only=on;#server_name127.0.0.1内网ip域名;#......
  • qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed加
    qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();qDebug()<<"OpenSSL支持情况:"<<QSslSocket::supportsSsl();打印需要的版本和当前openssl的支持情况如果显示false,不支持就是说明,不支持加密对应下载版本的openssl进行重新编译即可原因......
  • 详解 HTTPS、TLS、SSL、HTTP区别和关系
    一、什么是HTTPS、TLS、SSLHTTPS,也称作HTTPoverTLS。TLS的前身是SSL,TLS1.0通常被标示为SSL3.1,TLS1.1为SSL3.2,TLS1.2为SSL3.3。下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系 二、HTTP和HTTPS协议的区别1、HTTPS协议需要到证书颁发机构(CertificateA......
  • SSL代理有哪些?
    您可能已经对代理有所了解,例如移动代理、住宅代理和数据中心代理之间的区别。但是SSL代理到底是什么?它与其他类型的代理相比有何不同? 让我们分析一下,看看SSL代理有何特殊之处。1.什么是SSL/HTTPS代理?SSL代理,也称为HTTPS代理,使用称为安全套接字层(SSL)的协议......