在Ubuntu 18.04 LTS + Apache 2中安裝使用Let’s Encrypt SSL憑證
嗨大家好,今天想來聊聊如何在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!