centos+nginx使用acme.sh安装免费Let’s Encrypt通配符证书

一、安装acme.sh

curl https://get.acme.sh | sh

二、检查是否安装好

#直接运行
acme.sh
#如报错请运行如下
source ~/.bashrc

三、2种验证方式

1、DNS方式:获取阿里云的ID和Secret

https://ak-console.aliyun.com/#/accesskey

# 替换成从阿里云后台获取的密钥
export Ali_Key="ID"
export Ali_Secret="Secret"
# 换成自己的域名
acme.sh --issue --dns dns_ali -d baidu.com -d *.baidu.com

等待120秒

四、安装证书

#请把域名换成自己的域名
acme.sh --installcert -d baidu.com -d *.baidu.com  \
--keypath       /home/ssl/baidu.com/baidu.com.key  \
--fullchainpath /home/ssl/baidu.com/fullchain.cer \
--reloadcmd     "sudo service nginx force-reload"

五、配置nginx

server {
    listen 80;
    listen 443 ssl;
    server_name  www.baidu.com;


    ssl on;
    ssl_certificate /home/ssl/baidu.com/fullchain.cer; 
    ssl_certificate_key /home/ssl/baidu.com/baidu.com.key; 
    ssl_session_timeout  5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers  on;


    if ($scheme != 'https') {
    rewrite ^(.*)$  https://$server_name$1 permanent;
    }
}

<think>好的,用户现在问的是关于在CentOS 7.9上安装acme.sh的问题。我需要先回顾之前的对话历史,看看是否有相关的上下文。之前用户询问的是MySQL 8的ALTER USER root的问题,而这次是关于acme.sh安装,看起来是一个新的话题。不过,可能用户是在进行服务器配置,先处理了数据库的安全设置,现在需要配置SSL证书,所以转向了acme.sh安装。 用户的需求可能是想通过acme.sh来自动化申请和管理Let's Encrypt的SSL证书CentOS 7.9是一个比较旧的系统,但依然广泛使用,所以用户可能是在维护现有的服务器环境。需要确保提供的步骤在CentOS 7.9上有效,并且考虑到可能的依赖问题。 首先,我需要考虑acme.sh的基本安装步骤。通常,安装acme.sh可以通过curl或者wget下载脚本,然后执行安装。但CentOS 7.9默认可能没有安装git或者curl,所以需要先安装这些依赖。另外,用户可能需要配置cron任务来自动续期证书,这部分也需要说明。 然后,用户可能关心的是如何申请证书,比如使用standalone模式还是webroot模式,或者DNS API验证。不同的模式适用不同的场景,需要解释清楚。例如,如果用户已经有Web服务器运行,使用webroot模式可能更合适,而standalone模式可能需要暂时关闭占用80端口的服务。 另外,CentOS 7.9的防火墙是firewalld,可能需要开放80和443端口,或者在申请证书时临时允许这些端口。这也是需要提到的细节,避免用户遇到连接问题。 还有,证书申请后的安装步骤,如何将证书配置到Nginx或Apache中,可能需要给出示例路径和配置片段,但用户可能只需要安装步骤,后续配置可以根据具体的服务器软件调整。不过,提供一些常见服务器的示例会更有帮助。 在安装过程中,可能会遇到依赖问题,比如socat是否安装,或者权限问题,需要提醒用户注意。此外,acme.sh的自动更新功能是否启用,以及如何升级现有的acme.sh脚本,这些也是用户可能关心的问题。 最后,用户可能对安全性有要求,比如使用root还是普通用户安装,是否需要配置sudo权限等。需要建议最佳实践,比如使用普通用户安装,避免使用root权限,以增强安全性。 总结下来,回答的结构应该是先介绍acme.sh,然后详细步骤包括安装依赖、安装脚本、配置环境变量,接着是申请证书的不同方法,续期配置,安装证书到指定目录,以及常见问题和注意事项。同时,要提醒用户关于防火墙的设置和安全性建议,确保他们能够顺利完成安装并正确使用acme.sh管理证书。</think>以下是针对 **CentOS 7.9** 系统使用 `acme.sh` 安装和管理 Let's Encrypt SSL 证书的详细指南: --- ### **1. 安装前准备** #### **1.1 安装依赖工具** ```bash # 更新系统 sudo yum update -y # 安装必要工具(curl、git、socat等) sudo yum install -y curl git socat cronie ``` #### **1.2 启动并启用 cron 服务** ```bash sudo systemctl start crond sudo systemctl enable crond ``` --- ### **2. 安装 `acme.sh`** #### **2.1 下载并安装脚本** ```bash # 使用 curl 安装 curl https://get.acme.sh | sh # 或使用 git 克隆仓库 git clone https://github.com/acmesh-official/acme.sh.git cd acme.sh ./acme.sh --install ``` #### **2.2 配置环境变量** ```bash # 加载 acme.sh 环境变量 source ~/.bashrc # 验证安装 acme.sh -- ### **3. 申请 SSL 证书** #### **3.1 方法 1:Standalone 模式(自动验证)** 适用于服务器未运行 Web 服务时,自动监听 80 端口验证域名所有权。 ```bash # 临时关闭占用 80 端口的服务(如 Nginx/Apache) sudo systemctl stop nginx # 申请证书(替换 yourdomain.com 为实际域名) acme.sh --issue --standalone -d yourdomain.com # 重启 Web 服务 sudo systemctl start nginx ``` #### **3.2 方法 2:Webroot 模式** 适用于已运行 Web 服务时,通过文件验证域名所有权。 ```bash # 创建验证目录 mkdir -p /var/www/html/.well-known/acme-challenge # 申请证书(指定 Web 根目录) acme.sh --issue -d yourdomain.com -w /var/www/html ``` #### **3.3 方法 3:DNS API 验证** 适用于通过 DNS 提供商 API 自动验证(支持阿里云、Cloudflare 等)。 ```bash # 以阿里云 DNS 为例 export Ali_Key="Your_Aliyun_AccessKey" export Ali_Secret="Your_Aliyun_AccessSecret" # 申请证书 acme.sh --issue --dns dns_ali -d yourdomain.com -d *.yourdomain.com ``` --- ### **4. 安装证书到指定目录** ```bash # 创建证书存储目录 sudo mkdir -p /etc/ssl/yourdomain.com # 复制证书文件(替换 yourdomain.com 为实际域名) acme.sh --install-cert -d yourdomain.com \ --key-file /etc/ssl/yourdomain.com/private.key \ --fullchain-file /etc/ssl/yourdomain.com/fullchain.cer \ --reloadcmd "sudo systemctl reload nginx" ``` -- ### **5. 自动续期配置** `acme.sh` 默认已配置自动续期任务(通过 cron 实现),无需手动操作: ```bash # 查看 cron 任务 crontab -l | grep acme.sh ``` -- ### **6. 防火墙配置(如启用 firewalld)** ```bash # 开放 HTTP/HTTPS 端口 sudo firewall-cmd --add-service=http sudo firewall-cmd --add-service=https sudo firewall-cmd --reload ``` --- ### **7. 常见问题** #### **7.1 证书续期失败** - **原因**:DNS 解析未生效、API 密钥错误或端口被占用。 - **解决**: ```bash # 手动强制续期 acme.sh --renew -d yourdomain.com --force ``` #### **7.2 权限不足** - **表现**:`acme.sh` 提示无法写入文件。 - **解决**: ```bash # 使用 root 用户安装或添加 sudo 权限 sudo chmod 755 /etc/ssl/yourdomain.com ``` --- ### **8. 注意事项** 1. **域名解析**:确保域名已正确解析到服务器 IP。 2. **证书路径**:Nginx/Apache 配置中需指定证书路径(参考 `/etc/ssl/yourdomain.com`)。 3. **备份证书**:定期备份 `/etc/ssl` 目录下的证书文件。 4. **安全建议**: - 使用 DNS API 验证时,保护 API 密钥。 - 避免使用 `root` 用户直接操作。 --- ### **示例:Nginx 配置片段** ```nginx server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/ssl/yourdomain.com/fullchain.cer; ssl_certificate_key /etc/ssl/yourdomain.com/private.key; # 其他配置... } ``` -- 通过以上步骤,您可以在 CentOS 7.9 上快速部署 `acme.sh` 并自动化管理 SSL 证书
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值