前言
這篇算是真的 for 我自己的純筆記,可能很多人的設定跟我不太一樣,所以本文僅供參考。以下環境為 Ubuntu 20 + apache2。本文將介紹假設都已經成功設定過 Virtual Host 子網域的情況下,要加入新的 Virtual Host 子網域,到建立 SSL (https) 憑證可能會遇到的相關指令。
p.s. 網域名稱都是以我自己現狀為主,就不再調整名稱了。請將 jsy.tw 的部份都換成你的主網域名稱。
加入新的 Virtual Host 子網域
首先因為要建立 Virtual Host 子網域,先複製一份舊的子網域設定檔最快。
先移到 sites-available 並列出現在已有的設定檔:
$ cd /etc/apache2/sites-available
$ ls
000-default.conf default-ssl.conf blog.jsy.tw-le-ssl.conf
blog.jsy.tw.conf jsy.tw-le-ssl.conf jsy.tw.conf
新網域假設叫 new.jsy.tw,於是複製一份之前的設定檔為 new.jsy.tw.conf:
$ sudo cp blog.jsy.tw.conf new.jsy.tw.conf
修改 new.jsy.tw.conf 的相關設定,將曾經出現過的舊的網域都改成新的網域:
$ sudo vim new.jsy.tw.conf
# 將舊的網域名稱都改成新的
設定好後,前往自己的 DNS records,新增新子網域的記錄:(因為我有設定 Digital Ocean 為外部名稱伺服器,所以下圖為 Digital Ocean 的畫面)
建立 SSL (https) 憑證
完成 DNS records 後,就可以回到 Ubuntu 用 certbot 建立新憑證:(完整的 etbot 相關設定可參考我的另一篇文章:【筆記】Ubuntu 18.04 + Apache 使用 Snap 安裝 Certbot 並向 Let’s Encrypt 取得免費 SSL 憑證的方法)
$ sudo certbot --apache
# 接下來依照 certbot 的設定精靈操作即可
# 記得要一次選擇 www.new.jsy.tw 和 new.jsy.tw 兩個
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: jsy.tw
2: blog.jsy.tw
3: www.blog.jsy.tw
.
.
.
16: new.jsy.tw
17: www.mew.jsy.tw
.
.
.
24: www.jsy.tw
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 16,17
certbot 設定完成後,重啟 apache2:
$ sudo systemctl reload apache2
到這邊應該就算大功告成了。
補充指令
以下列出幾個可能會用到的指令:
# 啟用網域設定檔
$ sudo a2ensite <your_domain_conf>
# 關閉網域設定檔
$ sudo a2dissite <your_domain_conf>
# 測試 certbot 已設定好的憑證是否能夠自動更新
$ sudo certbot renew --dry-run
# 切換成 root(不然可能無法進入 letsencrypt 資料夾)
$ sudo -i
# 確認 cetrbot 已經設定成功的網域
$ cd /etc/letsencrypt/renewal/ && ls
# 刪除 cetrbot 已經設定成功的網域
$ sudo certbot delete --cert-name <your_domain_wnat_to_delete>
參考資料