Ubuntu通过acme.sh配置HTTPS证书
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"