申请ZeroSSL泛域名域名证书 并部署阿里云测试

安装acme.sh 安装过程中可能会失败 多试几次就会成功

国外服务器安装方式
wget -O -  https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | sh -s -- --install-online -m  你的邮箱@gmail.com

国内服务器安装方式
yum install git
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m xxx@gmail.com

安装完成后重新加载 Bash:

source ~/.bashrc

然后也可以开启自动更新

acme.sh --upgrade --auto-upgrade

3.0以上版本默认申请ZeroSSL的证书

切换 Let’s Encrypt

acme.sh --set-default-ca --server letsencrypt

切换 Buypass

acme.sh --set-default-ca --server buypass

切换 ZeroSSL

acme.sh --set-default-ca --server zerossl

切换 SSL.com

acme.sh --set-default-ca --server ssl.com

切换 Google Public CA

acme.sh --set-default-ca --server google

本次演示申请zerossl的泛域名证书

进入官网注册账号生成

https://app.zerossl.com/developer

EAB Credentials
EAB KID
EAB HMAC Key

在这里插入图片描述

执行以下命令进行注册

acme.sh --register-account  --server zerossl \
        --eab-kid 你的eab-kid  \
        --eab-hmac-key 你的eab-hmac-key

执行以下命令导入阿里云api秘钥

export Ali_Key="你的阿里云api key"
export Ali_Secret="你的阿里云api 秘钥"

配置nginx 验证域名

server {
	listen 80;
	listen [::]:80;
	server_name *.test.xxx.com;

	location /.well-known/acme-challenge {
		root /var/www/letsencrypt;
	}

	location / {
		rewrite	^/(.*)$ https://$host/$1 permanent;
	}
}

执行以下命令申请证书

–issue

–dns dns_ali 阿里云dns

-d 域名

–force 强制申请

acme.sh --issue --dns dns_ali -d *.test.xxx.com -d test.xxx.com --force

下面展示证书生成成功

![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/344ca25bb2287ade70038c328fa2caac.png
在这里插入图片描述

复制证书到nginx证书目录

cp fullchain.cer /etc/nginx/_ssl/*.wx.test.xxx.com.cer
cp *.wx.test.xxx.com.key /etc/nginx/_ssl/*.wx.test.xxx.com.key
 #微信443
    server {
        # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
        listen 443 ssl;
        # 域名,多个以空格分开
        server_name *.wx.test.xxx.com;

        # ssl证书地址
        ssl_certificate /etc/nginx/_ssl/*.wx.test.xxx.com.cer; # pem文件的路径
        ssl_certificate_key /etc/nginx/_ssl/*.wx.test.xxx.com.key; # key文件的路径

        # ssl验证相关配置
        ssl_session_timeout 5m; #缓存有效期
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议
        ssl_prefer_server_ciphers on; #使用服务器端的首选算法

        location / {
            index index.html;
            root /usr/local/html/jianmu/vt/;
            try_files $uri $uri/ /index.html;
            gzip_static on;
            add_header 'Access-Control-Allow-Origin' '*' always;
        }
    }
    #微信80
    server {
        listen 80;
        server_name *.wx.test.xxx.com;
        return 301 https://$server_name$request_uri;
    }
<think>好的,我现在需要帮助用户了解如何使用acme.sh来设置Let's Encrypt或其他不需要认证或注册的证书颁发机构。用户之前询问过如何将Nginx添加为服务,现在可能是在部署网站时需要配置SSL证书。 首先,用户的问题中提到“不需要认证或注册的颁发机构”,这有点矛盾,因为Let's Encrypt是需要验证域名的所有权的,但可能用户指的是不需要用户注册账户或提供额外信息的CA。Let's Encrypt确实不需要用户注册,只需要验证域名控制权。其他可能的CA如ZeroSSL可能需要邮箱注册,但acme.sh默认使用Let's Encrypt,也可能用户想用其他类似的CA。 接下来,我需要回顾acme.sh的基本用法,包括安装、签发证书的几种验证方式(HTTP、DNS等),以及自动续期配置。用户可能需要的是快速生成证书,不需要复杂步骤,所以重点应放在HTTP验证和DNS API集成上,尤其是自动化的部分。 需要注意的是,用户可能对ACME协议和不同的CA不太了解,所以需要解释清楚Let's Encrypt和ZeroSSL的区别,以及如何切换CA。同时,用户可能关心如何免交互或自动化,比如使用--register-account -m email参数自动注册,或者使用STAGE环境变量避免生产限速。 另外,用户可能遇到常见问题,比如证书签发失败的原因,权限问题,或者cron任务未正确设置导致续期失败。需要给出检查日志、验证配置和测试续期的建议。 最后,要确保步骤清晰,适合不同环境的用户,比如使用Nginx或Apache的,或者需要手动验证的情况。可能需要提醒用户关于路径配置和权限设置,尤其是acme.sh默认安装到用户目录下的问题,以及如何配置系统服务或cron任务。 总结步骤: 1. 安装acme.sh,解释不同安装方式。 2. 选择CA,默认是Let's Encrypt,切换到ZeroSSL或其他可能需要邮箱。 3. 签发证书的各种方法,强调DNS API的自动化。 4. 安装证书到指定位置,配置web服务器。 5. 自动续期的配置和测试。 6. 常见问题处理和小贴士。 需要确保语言简洁,步骤明确,特别是命令行部分要正确无误。同时,要避免技术术语过多,用用户容易理解的方式解释,比如用示例说明DNS API的配置,或如何修改Nginx配置使用新证书。</think>以下是使用 **acme.sh** 配置 **Let's Encrypt**(或其他 ACME 兼容证书颁发机构)自动签发 SSL 证书的详细指南,支持无需人工交互的自动化操作。 --- ### **1. 安装 acme.sh** #### **一键安装脚本**(推荐): ```bash curl https://get.acme.sh | sh -s [email protected] ``` - **说明**: - `email` 用于证书颁发机构(如 Let's Encrypt)的账户注册(可替换为任意邮箱)。 - 脚本会将 `acme.sh` 安装到 `~/.acme.sh/` 目录,自动添加计划任务(cron job)处理续期。 --- ### **2. 选择证书颁发机构(CA)** acme.sh 默认使用 **Let's Encrypt**,但支持其他 ACME 兼容的 CA(如 ZeroSSL): ```bash # 切换为 ZeroSSL acme.sh --set-default-ca --server zerossl ``` #### **常用 CA 服务器地址**: | CA | 命令参数 | 是否需要注册 | |--|--|--| | Let's Encrypt(默认) | `--server letsencrypt` | 无需注册(自动生成账户) | | ZeroSSL | `--server zerossl` | 需要邮箱注册(首次需运行 `acme.sh --register-account [email protected]`) | | Buypass | `--server buypass` | 需要邮箱注册 | -- ### **3. 签发证书的验证方式** #### **方式 1:HTTP 文件验证**(需开放 80 端口) ```bash acme.sh --issue -d example.com -d www.example.com --webroot /var/www/html ``` - **参数说明**: - `-d`: 指定域名(支持多个域名)。 - `--webroot`: 指定 Web 根目录,acme.sh 会在该目录下创建 `.well-known/acme-challenge/` 临时文件用于验证。 #### **方式 2:DNS API 验证**(无需开放端口,推荐自动化) 以 **Cloudflare** 为例: 1. **获取 Cloudflare API Token**: 登录 Cloudflare 控制台,生成一个具备 **Zone:Read** 和 **DNS:Edit** 权限的 API Token。 2. **配置环境变量**: ```bash export CF_Token="your-cloudflare-api-token" export CF_Account_ID="your-cloudflare-account-id" ``` 3. **签发证书**: ```bash acme.sh --issue --dns dns_cf -d *.example.com ``` - **其他 DNS 服务商**: acme.sh 支持 100+ 种 DNS 提供商的 API(如阿里云、GoDaddy、AWS Route53),具体参数参考 [官方文档](https://github.com/acmesh-official/acme.sh/wiki/dnsapi)。 --- ### **4. 安装证书到指定位置** 证书签发后默认存储在 `~/.acme.sh/example.com/`,需手动复制到 Web 服务器目录: ```bash acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --reloadcmd "systemctl reload nginx" ``` - **参数说明**: - `--reloadcmd`: 证书续期后自动执行的命令(如重启 Nginx/Apache)。 - 证书文件会自动更新,续期过程无需人工干预。 --- ### **5. 自动续期配置** acme.sh 安装时已自动添加 **cron 任务**,每日检查证书有效期(到期前 30 天自动续期)。 - **手动测试续期**: ```bash acme.sh --renew -d example.com --force ``` --- ### **6. 其他实用命令** | 命令 | 说明 | |--| | `acme.sh --list` | 查看已签发的证书 | | `acme.sh --revoke -d example.com` | 吊销证书 | | `acme.sh --remove -d example.com` | 删除证书 | | `acme.sh --upgrade` | 升级 acme.sh | --- ### **7. 常见问题** #### **问题 1:证书签发失败** - **原因**: - DNS 解析未生效或 API Token 权限不足。 - HTTP 验证时 80 端口被占用或无法访问。 - **解决**: ```bash # 查看详细日志 acme.sh --issue -d example.com --debug ``` #### **问题 2:cron 任务未执行** - **检查 cron 日志**: ```bash grep acme.sh /var/log/cron ``` --- ### **8. 高级配置** #### **使用 Let's Encrypt 测试环境**(避免生产限速): ```bash acme.sh --staging --issue -d example.com --webroot /var/www/html ``` #### **自定义证书有效期**(仅部分 CA 支持): ```bash acme.sh --issue -d example.com --days 90 ``` --- 通过以上步骤,你可以快速为域名签发免费的 SSL 证书通过自动化脚本实现长期维护。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值