在WordPress使用SSL憑證(HTTPS) – Certbot on HAProxy

Note : 此篇教學需要有自己的Domain Name(網域名稱)。

前言

一開始用在我的網域上混用HTTP和HTTPS,

後來看這篇文章how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04後,

發現Certbot讓我很容易的使用SSL憑證在apache或HAProxy上,而且用Chrome連上自己的網站會顯示安全

簡介

Let’s Encrypt 是第三方的證書頒發機構,在HTTPS上使用它的憑證就會顯示安全

Certbot 會自動連上Let’s Encrypt,然後幫你索取Let’s Encrypt的憑證。

由於我的網站流量會先經過HAProxy,再流向Wordpress所在的Apache2,因此我必須在HAProxy就弄好SSL憑證,所以和網路上常見的WordPress 設定HTTPS並不一樣。

安裝 (環境: Ubuntu 16.04)

  1. 首先先安裝certbot
    $ sudo add-apt-repository ppa:certbot/certbot
    $ sudo apt-get update
    $ sudo apt-get install python-certbot-apache
    
  2. 安裝SSL憑證
    certbot certonly --standalone
    

    Note : 第一次安裝的時候,會需要註冊帳號,這是因為 Let’s Encrypt需要有帳號才會發憑證給你。

    我使用standalone的原因是,它不會自動更改到Apache的設定。

    在安裝憑證的時候,必須把正在使用80和443 port的程式關閉。例如: HAProxy。

    接著安裝好後,憑證會出現在/etc/letsencrypt/live/,在這目錄下會有你剛剛申請的憑證目錄,目錄下有5個檔案分別是:

    • README
    • cert.pem
    • chain.pem
    • fullchain.pem
    • privkey.pem
  3. HAProxy設定HAProxy需要使用fullchain.pem,在/etc/haproxy/haproxy.cfg設定443 port 的憑證
    frontend www-https # www-https是我自己取的名子
           bind *:443 ssl crt /etc/letsencrypt/live/glenus.com/fullchain.pem
    

    如果需要多個網域的憑證的話,加入crt 憑證的路徑,像是:

    frontend www-https # www-https是我自己取的名子
           bind *:443 ssl crt /etc/letsencrypt/live/glenus.com/fullchain.pem crt /etc/letsencrypt/live/blog.glenus.com/fullchain.pem
    
  4. 自動索取新的SSL憑證因為SSL憑證的有效期限是90天,所以必須定期的去更新你的憑證。我使用crontab定期的去執行certbot來更新憑證。
    $ sudo crontab -e
    

    在最後一行新增:

    0 0 * * 1 /usr/bin/certbot renew --quiet
    

    這個指令會一個禮拜更新一次所有的SSL憑證

發佈留言

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