如何使用acme.sh与阿里云DNS自动签发Let’s Encrypt的免费数字证书

转载自https://blog.csdn.net/apple_csdn/article/details/134964435

转载自https://www.orcy.net.cn/1337.html

一、获取阿里云DNS修改的Accesskey

在签发证书前需要准备阿里云账户的Accesskey,打开以下地址并创建AccessKey即可:

https://usercenter.console.aliyun.com/#/manage/ak

image

注意!阿里云支持子账户功能,为了提高安全性,请参考阿里云的文档,创建子账户后再创建API key,但这不是必须操作的。

创建完成后将AccessKey ID与Access Key Secret记下来备用。

二、安装acme.sh

1)安装很简单,命令如下,把 acme.sh 安装到你的 home 目录下:~/.acme.sh/

cd ~
git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m  my@example.com

说明:my@example.com 替换为你自己的邮箱或者不填

默认情况下,acme.sh以隐藏文件夹的形式安装在用户的home目录下

另外,它还会创建一个定时任务,通过以下命令即可查看:

13 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

定时任务会在每天0点13分调用acme.sh程序,以检查证实是否过期,是否需要续签等。这个定时任务的时间是随机的,但不影响主要功能。

强烈建议添加一条别名命令方便后边执行

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

三、申请证书

完成安装后先来准备脚本,这个脚本只需要执行一次。执行后,这些信息会记录在相关目录中,后续的执行将自动执行

将之前步骤中准备好的阿里云Accesskey填写到上面命令的中,并在终端中执行,执行后并不会有内容返回

export Ali_Key="sddiwjedfasSDFSFsdaf"
export Ali_Secret="jlsdsddiwjedfasSDFSFkljlfdsaklkjflsa"

然后准备签发证书的命令,因为是签发,所以要使用“–issue”参数;指明使用“dns_ali”作为验证方式;后面跟着的“-d”为指定证书中的域名,这里有一点需要注意的:如果证书中只包含泛域名,那么签发出来的证书是没有根域的。所以需要额外添加一个根域

acme.sh --issue --dns dns_ali -d aaa.com -d *.aaa.com

在执行命令后,程序会调用阿里云的API,在DNS中添加以下内容:

image

然后程序会等待120秒,以便让DNS生效,而后再调用Let’s Encrypt的API进行验证与证书的签发工作,如果一切正常,验证通过之后,会完成证书签发的工作,最后会将DNS中用于验证域名所有权的TXT解析记录删除。

image

四、安装证书

不要直接复制证书到目标目录,正确的方式是使用 -install-cert 命令安装。在命令中指定目标位置,证书文件会被复制到相应的位置。reloadcmd 命令:当证书发布/更新后,reloadcmd 命令会被自动调用,让新的配置生效。也就是证书更新之后,nginx 配置的证书信息也会自动更新。

安装证书 把aaa.com 改成自己的域名

acme.sh --install-cert -d aaa.com \
--key-file /usr/local/nginx/ssl/aaa.com.key \
--fullchain-file /usr/local/nginx/ssl/aaa.com.pem

nginx.conf 配置证书信息

server {
  listen                     443 ssl;
  server_name                aaa.com;

  ssl_certificate            /usr/local/nginx/ssl/aaa.com.pem;
  ssl_certificate_key        /usr/local/nginx/ssl/aaa.com.key;
  ssl_buffer_size            16k;
  ssl_protocols              TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ecdh_curve             X25519:P-256:P-384:P-224:P-521;
  ssl_ciphers                TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
  ssl_prefer_server_ciphers  on;
  ssl_session_timeout        3h;
  ssl_stapling               on;
  ssl_session_tickets        on;

  access_log                 /var/log/nginx/access.log main;

  add_header                 Strict-Transport-Security "max-age=31536000; preload; includeSubDomains" always;
  add_header                 X-Frame-Options SAMEORIGIN;

  index                      index.php index.html;

  location / {
    root                     /usr/local/nginx/html;
  }
}

重启nginx后生效

nginx -c /etc/nginx/nginx.conf
nginx -s reload

使用https方式访问域名网站,查看证书信息

image

五、其他命令

查看申请的证书

acme.sh --list

image

强制续期证书

acme.sh --renew -d example.com --force

删除证书

acme.sh --remove -d example.com

撤销证书

acme.sh --revoke -d example.com

命令执行成功后,需要一并删除在\~/.acme.sh目录中的域名文件夹

rm -rf example.com_ecc

更新 acme.sh

目前由于 acme 协议和 Let’s Encrypt CA 都在频繁的更新,因此 acme.sh 也经常更新以保持同步。

手动升级 acme.sh 到最新版

acme.sh --upgrade

如果你不想手动升级,可以开启自动升级:

acme.sh --upgrade --auto-upgrade

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0
暂无评论

发送评论 编辑评论


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