Ubuntu通过acme.sh配置HTTPS证书

  heardfate

acme.sh实现了acme协议, 可以从letsencrypt生成免费的证书.

主要步骤:
1. 安装acme.sh
2. 生成证书
3. copy 证书到 nginx

安装 acme.sh

安装很简单, 一个命令:

curl  https://get.acme.sh | sh

acme.sh命令立即生效

使命令立即生效

source ~/.bashrc

生成证书

dns 方式, 在域名上添加一条 txt 解析记录, 验证域名所有权.
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.

以 阿里云 为例, 你需要先登录到 阿里云 账号, 生成你的 Ali_Key 和 Ali_Secret.

export Ali_Key="YourAliKey"
export Ali_Secret="YourAliSecret"
acme.sh --issue --dns dns_ali -d YourDomain -d YourDomain2

以我域名为例heardfate.com*.heardfate.com

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

证书就会自动生成了.

copy证书到nginx

  • 创建文件夹ssl/heardfate.com用于存放证书
sudo mkdir /usr/local/nginx/ssl
sudo mkdir /usr/local/nginx/ssl/heardfate.com
  • 修改文件夹拥有者为Ubuntu用户
sudo chown -R ubuntu:root /usr/local/nginx/ssl
  • 使用 --installcert 命令,指定目标位置, 接着证书文件会被copy到相应的位置
acme.sh --installcert -d heardfate.com -d *.heardfate.com \
--keypath /usr/local/nginx/ssl/heardfate.com/heardfate.com.key \
--fullchainpath /usr/local/nginx/ssl/heardfate.com/fullchain.cer \
--reloadcmd  "sudo /etc/init.d/nginx force-reload"

acme.sh配置
acme.sh配置
acme.sh配置
acme.sh配置