如何使用certbot自動更新SSL憑證 (CentOS 7, CentOS 6, Ubuntu)

現在Google Chrome以及Firefox等瀏覽器大品牌都很要求網站本身的SSL憑證,只要是非經第三方認證的https網站,輕則顯示驚嘆號『!』,重則顯示紅色還幫你加上一個斜槓,光看就讓瀏覽者感到不安全!
還好這世界上還有佛心公司 Let’s encrypt 提供免費的SSL憑證申請服務!但是,透過此公司申請到的憑證僅有3個月的有效期限,短短三個月就又要申請一次實在是麻煩!
有鑑於此,本次要介紹一套能夠自動更新Let’s encrypt核發SSL憑證的軟體——Certbot

Let’s encrypt傳統申請方法:如何申請免費SSL?又要怎麼安裝SSL?(以SSL For Free – Let’s Encrypt為例)

Step 1

安裝Certbot

CentOS 7

 

CentOS 6

 

Ubuntu

 

Step 2

用Certbot申請SSL憑證

Certbot常指令說明:

  1. –apache:表示使用apache作為伺服器軟體
  2. certonly:僅申請憑證,不主動編輯httpd.conf
  3. -w:網站根目錄所在(發證單位仍然要去驗證ACME Challenge file,所以Certbot必須要把驗證檔放在正確的位置)
  4. -d:網域名稱,如果是www開頭的話,還得多指定一個去掉“www”的網址(就像本範例這樣)

如果是使用CentOS 6,執行sh更新,把執行名稱改一下就可以了!

 

Certbot預設SSL憑證路徑

/etc/letsencrypt/live/domain_name/

 

Step 3

修改apache config

如果你跟我一樣,之前都是自己手動申請,那就必須修改config檔!

 

Step 4

測試!

讓Apache重新載入設定檔,沒錯!可以免重啟Apache唷~(最近發覺很好用的指令)

CentOS 7/ CentOS 6

 

Ubuntu

 

這時候就可以用瀏覽器重新整理你的網站,看看憑證有效日期是否已更新!

Step 5

設定Certbot自動更新

測試是否能更新

 

設定每兩個月更新一次,將更新指令加入cron
corn的詳細用法可以參考這篇:cron(crontab) – Linux常用指令#01

 

指令說明:

  1. renew:表示要求更新SSL憑證
  2. –quiet:不跳出詢問
  3. –no-self-upgrade:執行程式就好,不要更新Certbot本身!(預設是自動更新喔!)
  4. –post-hook:指定一串更新完成後要接續著執行的指令,用雙引號將指令框起來!

 

Step 6

確認SSL是否正確安裝

SSLShopper – SSL checker
把你的網址輸入到此服務,就可以確認SSL是否正確安裝喔。

 

Reference:

  1. EFF.org-Certbot
  2. Certbot Documentation
  3. How to setup Let’s Encrypt in CentOS 6 and CentOS 7-bobcares.com
  4. How To Secure Apache with Let’s Encrypt on Ubuntu 16.04-DigitalOcean
  5. The certificate is not trusted in all web browsers.

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

4 thoughts on “如何使用certbot自動更新SSL憑證 (CentOS 7, CentOS 6, Ubuntu)

  • 2018-04-20 at 16:15:24
    Permalink

    # sudo yum install certbot-apache
    Failed to set locale, defaulting to C
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: centos.uhost.hk
    * extras: centos.uhost.hk
    * updates: centos.uhost.hk
    No package certbot-apache available.

    Hi,
    我不能用yum安裝certbot,原因是找不到packet,請問有方法嗎?

    thanks

    PIN

    Reply
    • 2018-04-21 at 00:20:26
      Permalink

      Hi PIN,
      如果你的作業系統也是使用CentOS,不妨安裝”certbot”看看!

      certbot是包在EPEL這個Repository裡面,如果還是找不到,可以先安裝Repository: EPEL!
      下列是certbot的資訊:
      Installed Packages
      Name : certbot
      Arch : noarch
      Version : 0.22.2
      Release : 1.el7
      Size : 23 k
      Repo : installed
      From repo : epel
      Summary : A free, automated certificate authority client
      URL : https://pypi.python.org/pypi/certbot
      License : ASL 2.0
      Description : certbot is a free, automated certificate authority that aims
      : to lower the barriers to entry for encrypting all HTTP traffic on the internet.

      Reply
  • 2018-05-05 at 20:32:25
    Permalink

    問題1:關於step 2
    -d:網域名稱,如果是www開頭的話,還得多指定一個去掉“www”的網址(就像本範例這樣)
    sudo certbot –apache certonly -w /var/www/html/ -d http://www.brilliantcode.net -d brilliantcode.net
    —————————————————————————————————————————————
    想問
    若網址是xoops2.cdps.ntpc.edu.tw的話,在-d後面的指令是這樣嗎?還是?
    sudo certbot –apache certonly -w /var/www/html/ -d xoops2.cdps.ntpc.edu.tw -d cdps.ntpc.edu.tw

    問題2:關於step 3
    修改apache config,如果你跟我一樣,之前都是自己手動申請,那就必須修改config檔!
    —————————————————————————————————–
    想問,若是第一次申請設定,之前都沒申請過,step3還要做嗎?

    謝謝您~

    Reply
    • 2018-05-05 at 23:35:22
      Permalink

      問題1+問題2:假設你的apache站台只會有這個網站『xoops2.cdps.ntpc.edu.tw』,其實短時間內想完成這件事,你可以直接用下列指令來滿足你的需求!
      依據上述條件來提供給你的做法是取消『僅申請憑證』選項『certonly』,若不加此選項,certbot預設會自動幫你修改ssl.conf,也就是會自動幫你做“Step 3”!
      sudo certbot --apache -w /var/www/html/ -d xoops2.cdps.ntpc.edu.tw

      倘若你的伺服器已經有其他站台,同時也存在前人做好的設定,就不建議讓certbot自動幫你做設定!所以要加上『certonly』!
      如果對ssl.conf『/etc/httpd/conf.d/ssl.conf』不太了解,建議你可以來看一下這篇:Apache 2.4 https 多網域設定 讓一台伺服器綁定多個網址
      或者是看一下這篇:CentOS 7 架站教學彙整 (Apache 2.4 + MySQL 5.7 + php 7 + phpMyAdmin + SSH + sFTP)裡面有一區是『SSL相關教學』 😀

      Reply

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

%d 位部落客按了讚: