acme.sh配置永久免费通配ssl证书

在此之前ssl一直用的腾讯申请的,腾讯的证书不花钱只能单域名且有效期一年。虽然认证安全些但是我们普通开发者只是想要一个小锁而已,再加上最近证书有效期改成三个月,这样弄就麻烦了,所有花了一小点时间一劳永逸的解决了证书的事情。

只需要几步即可完成

1.安装acme

# 安装acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc

2.腾讯云获取API密钥

  1. 登录腾讯云控制台
  2. 进入【访问管理】->【API密钥管理】
  3. 创建新密钥,获取SecretIdSecretKey(要确保有 QcloudDNSPodFullAccess 的全读写权限)
  4. 保存好这两个密钥,后面会用到

3.申请通配符证书

# 设置腾讯云API密钥
export DP_Id="你的SecretId"
export DP_Key="你的SecretKey"
# 切换CA,可选
acme.sh --set-default-ca --server letsencrypt

# 申请通配符证书
acme.sh --issue --dns dns_dp -d "*.yourdomain.com" -d "yourdomain.com"

4.部署证书

上面申请了证书只是把证书链放在了本地,没有生成对应的类似pem,crt的证书,并且也没有自动更新的功能,所以需要部署

# 创建证书目录(如果不存在)
mkdir -p /etc/nginx/ssl/

# 复制证书文件(acme.sh路径)
acme.sh --install-cert -d "yourdomain.com" \
--key-file /etc/nginx/ssl/yourdomain.com.key \
--fullchain-file /etc/nginx/ssl/yourdomain.com.crt \
--reloadcmd "systemctl reload nginx"

这样/etc/nginx/ssl下就有对应的key和crt文件,并且会自动更新了,自动更新可以查看定时任务

crontab -l | grep acme.sh

手动测试续期

# 测试续期(不实际更新)
acme.sh --renew -d yourdomain.com --force --test

# 实际续期
acme.sh --renew -d yourdomain.com --force

5.配置nginx

添加https的配置

# HTTPS主配置
server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;
    
    # Let's Encrypt证书路径
    ssl_certificate /etc/nginx/ssl/yourdomain.com.crt;
    ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
    
    # SSL安全配置 - 符合Let's Encrypt最佳实践
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    
    # HSTS头
    add_header Strict-Transport-Security "max-age=63072000" always;
    
    # 站点配置
    root /usr/share/nginx/html;
    index index.html index.htm;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    # 用于证书续期验证
    location ~ /\.well-known/acme-challenge {
        root /usr/share/nginx/html;
        allow all;
    }
}

然后重启nginx

nginx -t && systemctl reload nginx
# 检查证书信息
openssl x509 -in /etc/nginx/ssl/yourdomain.com/fullchain.crt -noout -subject -dates

# 测试网站SSL
curl -I https://yourdomain.com

# 检查证书透明度日志(可选)
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null 2>/dev/null | openssl x509 -text | grep -A 10 "CT"

本文作者: 小世炎
本文链接: https://www.xiaoshiyan.top/archives/532
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议 转载请注明出处!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇