iT邦幫忙

1

安裝 Certbot 以取得網頁的 Let's Encrypt 憑證 (於Ubuntu+Apache)

  • 分享至 

  • xImage
  •  

之前的 ssl/tsl 憑證過期惹,拖了很久終於安裝好了
寫個筆記避免自己腦霧又忘記這個過程XD


前情提要

執行環境為
Ubuntu 22.04.5 LTS
Apache/2.4.52

使用UFW設定防火牆規則

查看是否安裝UFW
ufw version

如果沒有顯示版本,則安裝UFW
sudo apt update sudo apt install ufw

允許防火牆規則
sudo ufw allow ssh sudo ufw allow http sudo ufw allow https

允許 UFW 開啟
sudo ufw enable

查看UFW是否已開啟及其設定的狀態
sudo ufw status

確認主機資訊並安裝 snapd

因為 snapd 是 certbot 相關的 package 所以要先來安裝這個
不過在 Ubuntu 16 之後會預設自動安裝(好險?XD)

先用hostnamectl看Ubuntu版本

如果Ubuntu版本低於16的話只好自己手動安裝..
sudo apt update
sudo apt install snapd

題外話:APT 與 npm

apt 是 Advanced Packaging Tool 的簡稱,看起來有種似曾相識的感覺(謎之音:npm..)
簡單說 apt 就是 Ubuntu 系統的 Packaging tool,而 npm 則是 node 的 package manager

Package Manager What It Manages What It's Used For
APT Operating system software (web servers, databases, and system tools) apt install apache2 於Ubuntu上安裝apache web伺服器
npm JavaScript packages and libraries for Node.js projects npm install 安裝package.json內的packages到專案裡

安裝 snap core
sudo snap install core
sudo snap refresh core

終於來到了安裝 Certbot 的時刻

先移除Certbot舊版本避免衝突
sudo apt remove certbot
用 snap 安裝 Certbot
sudo snap install --classic certbot

安裝完會顯示

certbot 4.2.0 from Certbot Project (certbot-eff✓) installed

表示已成功安裝Certbot

用 certbot request 證書

然後用 Certbot 的指令來要求證書
sudo certbot --apache -d myDomainName.com -d www.myDomainName.com
接下來照著輸入 mail 跟一些資訊後一直 enter 就會結束
夠幸運(?)的話到這裡就結束了,之後就可以快樂的享用有憑證a網頁
但人生總是有意外..

救命啊 www 顯示設定有問題

雖然顯示了

Deploying certificate 
Successfully deployed certificate for myDomainName.com to /etc/apache2/sites-enabled/000-default.conf

但是接下來訊息顯示找不到vhost

We were unable to find a vhost with a ServerName or Address of www.myDomainName.com.
Which virtual host would you like to choose?

這時候先不要急著輸入!按c先中斷離開
用指令用nano editor開啟 .conf檔(通常預設是000-default)
sudo nano /etc/apache2/sites-available/000-default.conf

不確定 .conf 到底叫啥名字的話可以用指令列出來
ls /etc/apache2/sites-available/

進到 .conf 的時候
<VirtualHost *:80>的區段內新增這兩行(請不要新增到<VirtualHost *:443>!)

ServerName myDomainName.com
ServerAlias www.myDomainName.com

確認新增好後輸入 ctrl+O (英文的O,不是0 XD)於 nano 編輯器儲存
輸入 ctrl+x 關閉 nano 編輯器

測試 apache configuration 是否設置正確並重新啟動apache
sudo apache2ctl configtest

基本上出現 Syntax OK 就表示設置正確了
重新啟動apache
sudo systemctl restart apache2

然後回到 『用 certbot request 證書』的步驟~
這時候終於可以快樂的享用有憑證a網頁~~

reference

https://www.linode.com/docs/guides/enabling-https-using-certbot-with-apache-on-ubuntu/


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
DennisLu
iT邦好手 1 級 ‧ 2025-09-04 17:37:21

本來也有用certbot ,
後來聽說有流行新的 ACME Client 了,
而且也有出docker版本(dockerhub 找 neilpang/acme.sh ),
跑docker continer來產憑證省去設置系統的需求,讓系統更單純也還不錯。

dc88 iT邦新手 4 級 ‧ 2025-09-04 18:57:45 檢舉

大感謝你的推薦~下次有機會來試試看!

DennisLu iT邦好手 1 級 ‧ 2025-09-04 21:39:32 檢舉
dc88 iT邦新手 4 級 ‧ 2025-09-05 02:00:38 檢舉

這麼讚!還有附個人筆記 大感謝~/images/emoticon/emoticon12.gif

我要留言

立即登入留言