使用acme申請https免費證書

deanglc發表於2019-03-25

前言


​ 上次寫了一篇https證書相關的筆記整理,個人覺得有些地方欠妥,這次介紹一個更方便更簡單更?一點的工具——acme.sh.上次使用的工具是certbot.

兩者對比,acme.sh有如下優點:

  • acme.sh會自動設定好定時任務.自動更新證書.certbot的更新需要手動設定cron.
  • acme.sh可以使用域名解析商提供的 api 自動新增 txt 記錄完成驗證.簡單、高效.
  • 安裝簡單,沒有環境依賴.解除安裝同樣簡單.

安裝


# 建議使用root安裝,
curl  https://get.acme.sh | sh 
複製程式碼

該命令會把acme安裝在~/.acme.sh路徑下,併為你建立一個檢查更新證書的定時任務.

因為該工具有個引數reloadcmd可以預設命令,可能會reload nginx伺服器等.建議使用root安裝.

#檢視定時任務
crontab -l
23 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
# --home --cron引數解釋可用~/.acme.sh/acme.sh -h檢視,解釋如下
  --home                   Specifies the home dir for acme.sh.指定acme的路徑
  --cron                   Run cron job to renew all the certs.定時檢查更新證書
複製程式碼

簽發證書(Issue a cert)


簽發證書前,需要驗證域名的所有權,acme支援多種方式驗證,建議使用http和dns驗證.

我的個人域名解析使用的是cloudflare的free套餐,且acme文件寫明支援cloudflare.所以選擇dns驗證.

依照acme文件-how-to-use-dns-api,

1.登入cloudflare官網獲取API key.

#cloudflare-->個人配置--->API key - Global API Key - view API key
# 拿到API key後,設定如下環境變數.
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
複製程式碼

接下來就可以愉快的申請證書了.

申請證書命令如下:

acme.sh --issue -d glc.im -d *.glc.im --dns dns_cf \ 
--key-file "/etc/nginx/ssl/glc.im/xxxx.key" \ 
--fullchain-file "/etc/nginx/ssl/fullchain.cer" \ 
--reloadcmd "service nginx reload"
複製程式碼
  • glc.im /*.glc.im換成自己的域名
  • dns_cf是對應的cloudflare,其他域名解析服務商請參照https://github.com/Neilpang/acme.sh/wiki/dnsapi
  • key-file/fullchain-fil 簽發證書後,acme會幫你把證書複製到該路徑下
  • reloadcmd 因為是root安裝的acme 此命令可以幫助我過載nginx

更多內容


相關文章