在Ubuntu 18.04 LTS + Apache 2中安裝使用Let’s Encrypt SSL憑證

Yu-Cheng Hung
4 min readJan 17, 2020

--

引用: https://blog.256pages.com/nginx-nodejs-letsencrypt-update/

嗨大家好,今天想來聊聊如何在Ubuntu 18.04 LTS和Apache 2的環境下安裝使用Let’s Encrypt SSL憑證,除了相關操作步驟外,也會分享筆者在工作過程中遇到的一些坑,希望能讓對這塊不熟的讀者們少繞一些冤枉路,此外也歡迎有相關經驗的讀者能一起討論指教,那麼我們就直接進入主題吧,GO!

什麼是Let’s Encrypt?

Let’s Encrypt可提供使用者免費、自動化和公開的SSL憑證,對於使用者可說是相當方便,有興趣的讀者可由連結造訪其官網以獲得更多資訊!

確認安裝環境很重要!

那麼為什麼會特別強調Apache 2呢?因為這就是筆者誤踩的第一個坑!當時在網路上找相關教學時,因為不熟悉加上該教學文章沒有特別提到環境問題,所以照著步驟安裝執行的結果雖然成功產生憑證並掛上Domain,但我的HTTP並不會自動轉址HTTPS,原因是該篇教學環境是Nginx,照步驟執行的過程中一併安裝了Nginx並用來產生SSL憑證,而Nginx搶佔了Apache2的80 port,導致雖然有成功掛上SSL憑證,但HTTP會一直轉址至Apache2 Ubuntu Default Page,無法轉址HTTPS,當時在這個地方研究了很久,後來將Nginx移除後重新以Apache2的方式跑一次Let’s Encrypt才徹底解決了轉址的問題,希望讀者們能多加小心!

安裝Certbot

這邊我們先安裝Certbot套件來協助我們完成自動化SSL認證:

$ sudo add-apt-repository ppa:certbot/certbot

接著安裝Certbot的Apache package:

$ sudo apt install python-certbot-apache

確認ServerName是否設置正確

請至以下檔案檢查是否已將ServerName設成你想註冊的Domain:

$ sudo vi /etc/apache2/sites-available/your_domain.conf

可以此指令驗證配置是否成功:

$ sudo apache2ctl configtest

記得重啟Apache服務:

$ sudo systemctl reload apache2

為HTTPS開通防火牆設定

$ sudo ufw allow 'Apache Full'
$ sudo ufw delete allow 'Apache'

查看防火牆狀態:

$ sudo ufw status

應該可以看到下列畫面:

OutputStatus: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)

獲得SSL憑證

$ sudo certbot --apache -d your_domain -d www.your_domain

這邊會要你輸入email用來確認申請者身分並激活後續開通流程,依序填入Domain和IP,並在如何配置HTTPS的地方選擇「2」,使所有的HTTP在Apache層級即可自動轉址HTTPS。

最後會出現成功訊息,並告訴你憑證檔存放路徑:

有效認證日期為九十天,我們可以用下列指令讓Cerbot自動續訂:

$ sudo certbot renew --dry-run

經過上述的操作後,相信各位的網站都已獲得SSL安全憑證,也都能自動轉址,那麼就下次見囉!See You!

--

--