幫助中心

伺服器、網路和帳戶的分步教程。

Linux 伺服器

網站免費 SSL 證書教程:在 Linux 用 Nginx 與 Let's Encrypt(Certbot)搭建 HTTPS 網站

網站免費 SSL 證書教程:在 Linux 用 Nginx 與 Let's Encrypt(Certbot)搭建 HTTPS 網站

公開網站都應該以 HTTPS 提供服務,而 Let's Encrypt 的免費 SSL 證書讓這件事變得很簡單。本文說明如何在 JUSTG 雲伺服器或獨立伺服器上以 Nginx 搭建網站、用 certbot 申請 Let's Encrypt 證書、確認自動續期正常,並強制使用 HTTPS。命令分別提供 Debian/Ubuntu 與 CentOS/Rocky Linux/AlmaLinux 版本。示例域名為 example.com,伺服器 IP 為 203.0.113.10,請替換成您自己的域名和 IP。

步驟 1:將域名指向 JUSTG 伺服器(A 與 AAAA 記錄)

在域名註冊商或 DNS 服務商建立 A 記錄,讓主域名與 www 指向伺服器的 IPv4。JUSTG 雲伺服器也免費提供 IPv6;只有在伺服器已配置 IPv6 且 Nginx 在 IPv6 上監聽時,才新增 AAAA 記錄。請等記錄生效後再申請證書,因為 Let's Encrypt 會從網際網路驗證域名。

# A    example.com       -> 203.0.113.10
# A    www.example.com   -> 203.0.113.10
# AAAA example.com       -> 2001:db8::10   (optional, only if IPv6 is configured)

# check from the server (Debian/Ubuntu: apt install -y dnsutils, Rocky: dnf install -y bind-utils)
dig +short example.com A
dig +short www.example.com A
dig +short example.com AAAA

步驟 2:在 Debian 或 Ubuntu 安裝 Nginx 與 certbot

certbot 的 Nginx 外掛可以自動修改 Nginx 設定。從預設軟體源安裝:

apt update
apt install -y nginx certbot python3-certbot-nginx
systemctl enable --now nginx
ufw allow 'Nginx Full'     # if UFW is enabled

步驟 3:在 Rocky Linux、AlmaLinux 或 CentOS 安裝 Nginx 與 certbot

RHEL 系統的 certbot 來自 EPEL 軟體源,同時要在 firewalld 開放 HTTP 與 HTTPS:

dnf install -y epel-release
dnf install -y nginx certbot python3-certbot-nginx
systemctl enable --now nginx
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload

步驟 4:建立網站與 Nginx server 塊

建立網站根目錄與測試頁面。在啟用 SELinux 的系統上,restorecon 可確保 Nginx 有權讀取檔案。

mkdir -p /var/www/example.com
echo '<h1>example.com is online</h1>' > /var/www/example.com/index.html
restorecon -Rv /var/www/example.com    # Rocky/Alma/CentOS with SELinux only

接著為域名新增 server 塊:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

依發行版存放到正確位置,檢查語法並重新載入 Nginx:

# Debian / Ubuntu: save as /etc/nginx/sites-available/example.com, then
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# CentOS / Rocky / AlmaLinux: save as /etc/nginx/conf.d/example.com.conf

nginx -t && systemctl reload nginx
curl -I http://example.com

若 curl -I 返回 200 OK,代表網站已能透過 HTTP 訪問,可以開始申請證書。

步驟 5:用 certbot --nginx 申請 Let's Encrypt 免費 SSL 證書

執行 certbot 並列出證書要涵蓋的所有域名。首次執行會要求輸入接收到期通知的郵箱地址,並同意 Let's Encrypt 條款。--redirect 引數會自動加上 HTTP 轉 HTTPS 的重定向。

certbot --nginx -d example.com -d www.example.com --redirect

certbot 會透過 Nginx 提供的臨時檔案驗證域名所有權,將證書安裝到 server 塊,並重新載入 Nginx。

步驟 6:確認自動續期正常工作

Let's Encrypt 證書有效期較短,必須自動續期。模擬續期可測試完整流程而不影響實際證書:

certbot renew --dry-run

# Debian / Ubuntu: the timer is enabled by the package
systemctl list-timers | grep certbot

# Rocky / AlmaLinux (EPEL): enable the renewal timer once
systemctl enable --now certbot-renew.timer

若模擬續期顯示成功且計時器為啟用狀態,就不需要再做其他設定。

步驟 7:強制 HTTPS 並驗證結果

如果先前沒有加 --redirect,可以自行把 80 連接埠的 server 塊改為重定向,並保留 certbot 建立的 HTTPS server 塊:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

重新載入 Nginx 後驗證:

curl -I http://example.com      # expect 301 to https://
curl -I https://example.com     # expect 200
certbot certificates

替代方案:在 aaPanel 一鍵申請 SSL

若伺服器已安裝 aaPanel,可以省略上述手動步驟。在“網站”中新增站點,開啟站點設定,進入 SSL 選項,選擇 Let's Encrypt,勾選域名後申請,再開啟“強制 HTTPS”開關即可,aaPanel 會自動續期。步驟 1 的 DNS 記錄仍然必要。

常見問題

certbot 出現連線失敗或超時錯誤,該檢查什麼?

確認 A 與 AAAA 記錄指向本伺服器、UFW 或 firewalld 已開放 80 與 443 連接埠,且 Nginx 正在執行。AAAA 記錄錯誤是常見原因,因為驗證可能透過 IPv6 進行。

一張證書可以涵蓋多個域名嗎?

可以。在 certbot 命令加上更多 -d 引數即可,每個域名都必須解析到此伺服器。

續期後需要重新啟動 Nginx 嗎?

不需要。certbot 的 Nginx 外掛在續期成功後會自動重新載入 Nginx。

如仍無法解決,請提交工單聯絡 JUSTG 技術支援。

這篇文章有幫助嗎?
幫助中心
Linux 伺服器 Linux SSH 金鑰登入教程:設定 ed25519 金鑰並禁用密碼登入 只要伺服器有公網 IPv4,上線幾分鐘內就會遇到 SSH 暴力破解機器人,而密碼登入正是它們的首要目標。本文說明如何用較新的 ed25519 金鑰完成 Linux SSH 金鑰登入,再禁用 SSH 密碼登入,全程避免把自己鎖在門外。步驟適用於 Debian… Linux 伺服器 Linux VPS 修改 SSH 連接埠與 root 密碼教程(安全不斷線) 把 SSH 從 22 連接埠移走雖然擋不住有心的攻擊者,卻能讓日誌裡大部分自動掃描消失;而任何新伺服器的第一件事,就是換一組新的 root 密碼。本文說明如何在 Linux VPS 修改 SSH 連接埠與 root 密碼且不斷線:修改 sshd_config、在 Rocky… Linux 伺服器 Linux 防火牆設定教程:VPS 使用 UFW 與 firewalld(含 IPv6) 新安裝的 Linux 伺服器,任何服務開啟的連接埠都會直接對外響應,因此主機防火牆是最先要設定的專案之一。本文說明如何在 Debian / Ubuntu 用 UFW 設定 Linux 防火牆,以及在 CentOS、Rocky Linux、AlmaLinux 使用… Linux 伺服器 Linux VPS 新增 Swap 交換空間教程(適合 512MB / 1GB 小記憶體套餐) 在 512 MB 或 1 GB 的雲伺服器上,資料庫、PHP-FPM 加上一次軟體包更新,很容易在同一時間用光記憶體。這時核心的 OOM killer 會強制終止程序,最常被犧牲的就是 MySQL 或 MariaDB。在 Linux VPS 新增 Swap… Linux 伺服器 Linux 硬碟空間已滿怎麼辦?VPS 找出並釋放磁碟空間教程 “No space left on device”幾乎會讓伺服器上所有東西出問題:資料庫無法寫入、網站返回錯誤、軟體包更新失敗,有時甚至無法正常登入。本文一步步說明如何排除 Linux 硬碟空間已滿:先確認是資料塊還是 inode 用完,再用 du 與 ncdu…
AlipayUnionPayVISAMastercardPayPalUSDTstripe