acme 证书管理

acme 证书管理
参考:官方文档

1. 证书申请

1.1 acme安装

  1. 命令行直接自动下载安装
curl https://get.acme.sh | sh
  1. 手动下载安装

网络不好可以手动下载上传,下载最新的acme安装包
https://github.com/Neilpang/acme.sh/archive/master.tar.gz
如果没有安装 socat,安装socat(可选)

yum install socat -y

安装

tar -zvxf acme.sh-master.tar.gz
cd acme.sh-master
./acme.sh --install

1.2 注册账户

acme.sh --register-account -m 邮箱地址

acme现在使用ZeroSSL,不注册账户会提示如下错误:
[Fri Nov 19 15:03:11 CST 2021] No EAB credentials found for ZeroSSL, let’s get one
[Fri Nov 19 15:03:11 CST 2021] acme.sh is using ZeroSSL as default CA now.

1.3 DNS 管理API访问配置

我这里使用的是阿里云,其他类似,参考:官方文档

  1. 用户头像下拉选择 AccessKey 管理
    在这里插入图片描述
  2. 创建子账户

AccessKey可以调用OpenApi进行一些操作,为了安全,使用创建个子用户,授予DNS管理权限即可。
在这里插入图片描述

  1. 创建并授权

创建用户,完成之后,会自动分配AccessKeyID 和 AccessKeySecret,复制下来保存
创建账户


授权
我这里已经选择过了,所以是灰色的,未选择点击 管理云解析(DNS)的权限放右边即可。
账户授权

1.4 申请证书

1.4.1 添加环境变量

回到服务器
添加上面的的key和Secret到系统环境变量,追加在~/.bashrc文件中即可,在申请证书的时候,acme 会保存到账户信息中

# 编辑文件
vim ~/.bashrc
export Ali_Key="AccessKeyID" 
export Ali_Secret="AccessKeySecret"
# 保存退出,并使环境变量生效
source ~/.bashrc

1.4.2 申请泛域名

acme.sh --issue --dns dns_ali -d xxx.com -d '*.xxx.com'

2. Nginx配置

主要是这三行
这里我是用了软连接放着了nginx配置下,真实地址如下:
key.pem => /root/.acme.sh/xxx.com/xxx.com.key
cert.pem => /root/.acme.sh/xxx.com/fullchain.cer

ssl_certificate /etc/nginx/xxx.com/fullchain/cert.pem;
ssl_certificate_key /etc/nginx/xxx.com/key.pem;
ssl_trusted_certificate /etc/nginx/xxx.com/fullchain/cert.pem;
server {
  listen 80;
  server_name www.xxx.com xxx.com;
  rewrite ^(.*) https://$host$1 permanent;
}

server {
  # 后来版本这样配置,以前是ssl on; 会提示警告:
  # nginx: [warn] the "ssl" directive is deprecated
  listen 443 ssl;
  server_name www.xxx.com xxx.com;

  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]\.";

  ssl_certificate /etc/nginx/xxx.com/fullchain/cert.pem;
  ssl_certificate_key /etc/nginx/xxx.com/key.pem;
  ssl_trusted_certificate /etc/nginx/xxx.com/fullchain/cert.pem;
  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;
  root /var/www/static-web/xxxxxx;
  index index.html;
  location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt){
    root /var/www/static-web/xxxxxx;
  }
}

3. 更新证书

证书有效期3个月,正常通过脚本启动会自动添加定时任务

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

如果更新失败或者发现证书失效,则需要更新acme

  1. 自动更新
acme.sh --upgrade
  1. 手动更新,参考第一节acme安装。


  1. 最后执行更新证书命令
acme.sh --cron --force --debug 2


猜你喜欢

转载自blog.csdn.net/wizard_rp/article/details/121428266
今日推荐