文章

使用acme.sh和cloudflare托管的域名生成网站的ssl通配符证书

1.安装acme.sh

在root目录

curl https://get.acme.sh | sh -s email=my@example.com

2.使用cloudflareapi密钥在服务器上生成环境变量CF_KeyCF_Email

①先去cloudflare(点击这里)官网获取api密钥

获取后在服务器执行,请把CF_KeyCF_Email 换成自己的

export CF_Key="763eac4f1bcebd8b5c95e9fc50d010b4"
export CF_Email="alice@example.com"

3.生成网站的通配符证书

./.acme.sh/acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'

如果遇到下图这种情况,说明ZeroSSL服务商抽风了,可在命令后面加--server letsencrypt ,没遇到的话可跳到第4点

./.acme.sh/acme.sh --issue --dns dns_cf -d example.com -d '*.example.com' --server letsencrypt

或者设置默认的ca证书服务商为letsencrypt

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

4.配置证书

生成的证书地址在/root/.acme.sh/<你的域名名称>/ ,如图

nginx 里配置证书

server {
  # 如果有资源,建议使用 https + http2,配合按需加载可以获得更好的体验
  listen 443 ssl http2;
  server_name <你的域名名称>;

  # 证书的公私钥
  ssl_certificate /root/.acme.sh/<你的域名名称_ecc>/fullchain.cer;
  ssl_certificate_key /root/.acme.sh/<你的域名名称_ecc>/<你的域名名称>.key;

    # gzip config
    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 / {
        # 用于配合 browserHistory使用
        try_files $uri $uri/index.html /index.html;

  }
  location /api {
      proxy_pass <你的域名名称,如: https://example.com>;
      proxy_set_header   X-Forwarded-Proto $scheme;
      proxy_set_header   Host              $http_host;
      proxy_set_header   X-Real-IP         $remote_addr;
  }
}

配置好之后,不要忘记执行nginx -s reload重新读取nginx配置

许可协议:  CC BY 4.0