let's encrypt 阿里云域名 免费泛域名解析及Nginx配置

注意:在使用 SSL 证书时,如 *.example.com 证书,仅支持 a.example.com, a1.example.com, a2.example.com 以此类推域名,但是不支持 b.a.example.com(另一级), b1.a.example.com 类域名,如需支持,需另外再购买一张 *.a.example.com 证书。

原理

通过let's encrypt 与阿里云dns解析api结合,自动颁发证书。

获取阿里云AK(1)

image
image

推荐使用子用户授权 ,使用子账户的AK(AccessKey ID + Access Key Secret)

子账户授权 : 须给子账户授权如下图

image

获取腾讯云AK(2)

*秘钥获取地址:https://console.dnspod.cn/account/token (和腾讯云账号密码一致)

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_dp -d example.com -d www.example.com

使用 acme.sh

acme.sh 是一个非常优秀的证书生成工具,其 官网 有详细的中文文档支持 。

  • 安装 acme.sh 命令
curl https://get.acme.sh | sh

需要系统支持 socat 及 curl 模块

安装完成后将会在 home 目录下生成 .acme.sh 文件夹
为了使用方便,增加alias

alias acme.sh=~/.acme.sh/acme.sh

生成证书

  • 首先将AK临时加入到环境变量中
export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxxxxxxx"
  • 注册账号设置邮箱
 acme.sh --register-account -m my@example.com
  • 执行命令
acme.sh --issue --dns dns_ali -d *.example.com
  • 更新主目录不要重复/home/zxb/ssl/ != /home/zxb/.acme.sh/
mkdir ssl
cp -r  /home/zxb/.acme.sh/*.example.com/* /home/zxb/ssl/*.example.com/
  • 加入定时更新
acme.sh --installcert -d *.example.com --key-file /home/zxb/ssl/*.example.com/*.example.com.key --fullchain-file /home/zxb/ssl/*.example.com/fullchain.cer --reloadcmd  "sudo service nginx force-reload" --log
  • archlinux =>sudo service nginx force-reload 修改为: sudo systemctl reload nginx
    如果更新的账号非root权限或sudo权限,sudo权限需要设置不需要输入密码
    相关设置:https://www.jianshu.com/p/140c1a6e29a9

接下来你将看到一个120秒的倒计时

image

倒计时之后证书将会存储到 ~/.acme.sh/*.example.com中

image

nginx 配置

    server {
        #listen       80;
        listen 443 ssl;
        server_name  *.[域名名].com;

        #设置长连接
        keepalive_timeout   70;

        #HSTS策略
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

        ssl_certificate /home/zxb/.acme.sh/*[域名名]/*.[域名名].cer;
        ssl_certificate_key /home/zxb/.acme.sh/*.[域名名]/*.[域名名].key;

        #优先采取服务器算法
        ssl_prefer_server_ciphers on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #定义算法
        ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
        #减少点击劫持
        add_header X-Frame-Options DENY;
        #禁止服务器自动解析资源类型
        add_header X-Content-Type-Options nosniff;
        #防XSS攻擊
        add_header X-Xss-Protection 1;

        gzip on;
        gzip_min_length 1k;
        gzip_comp_level 9;
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        gzip_vary on;
        gzip_disable "MSIE [1-6]\.";

        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #proxy_set_header Via "nginx";
        }

域名更新续期

#安装acme
curl https://get.acme.sh | sh
wget -O -  https://get.acme.sh | sh
#查看acme版本
acme.sh --version
#请填写实际key&Secret
export Ali_Key="4xvxbCThnjerg955"
export Ali_Secret="fwyhkkp0"
#申请证书
acme.sh --issue --dns dns_ali -d *.peakchao.com
#更新证书
acme.sh --renew -d '*.peakchao.com' --force
# 查看证书列表
acme.sh --list 
# 删除证书
acme.sh remove <SAN_Domains>
# 要停止更新证书,您可以执行以下操作从更新列表中删除证书
acme.sh --remove -d example.com [--ecc]

#升级 acme.sh 到最新版:
acme.sh --upgrade
#开启自动升级:
acme.sh  --upgrade  --auto-upgrade
#关闭自动更新:
acme.sh --upgrade  --auto-upgrade  0

#以下命令无需执行,据查看,acme会自动添加续期的定时任务
crontab -e
# 添加如下的任务:三个月执行一次
0 0 29 */3 * acme.sh --renew -d '*.peakchao.com' --force
#最后请不要忘记修改nginx配置以及重启 

问题一

  • curl: (35) Network file descriptor is not connected
$ curl https://get.acme.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:14 --:--:--     0curl: (6) Could not resolve host: get.acme.sh; Unknown error

原因:无法访问github.com,解决方式:GitHub 解决访问错误的问题 https://www.jianshu.com/p/ccb63a379575

问题二

...
[Mon Mar  7 22:12:23 CST 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7
[Mon Mar  7 22:12:23 CST 2022] Not valid yet, let's wait 10 seconds and check next one.
[Mon Mar  7 22:12:24 CST 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 35
...
  • 解决办法,修改host对Github的域名IP映射
 sudo vi /etc/hosts

添加一下解析

140.82.114.4 github.com
185.199.108.153 github.github.io
199.232.69.194 github.global.ssl.fastly.net
199.232.28.133 raw.githubusercontent.com

  • 更新证书
 acme.sh --renew -d *.domain.com --force
...
[Mon Mar  7 22:34:09 CST 2022] The DNS record already exists.
[Mon Mar  7 22:34:09 CST 2022] Error add txt for domain:_acme-challenge.wc.domain.com
[Mon Mar  7 22:34:09 CST 2022] Please check log file for more details: /home/zxb/.acme.sh/acme.sh.log
...

有时候一次不能成功,多尝试几次

 acme.sh --renew -d *.domain.com --force
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352