Files
106_105_181_40/docs/caddy.md
Timmy 97fd841a0c 新增分拆文件、SOP 與 Caddy SSL 憑證更新紀錄
- 將 hospital_media_antmedia.md 分拆為 docs/ 下五份主題文件
  (host.md, caddy.md, antmedia.md, ssl.md, maintenance.md)
- 新增 README.md / QUICKSTART.md / SUMMARY.md 作為文件入口
- 新增 SOP:Caddy SSL 憑證更新流程 (docs/sop-update-caddy-ssl.md)
  含 2026-04-16 實戰踩坑紀錄(.cer 副檔名、私鑰不匹配、sudo、防火牆 TLS 終端)
- 更新各文件中 tel.tpech.gov.tw 憑證資訊:HiPKI → TWCA,到期 2026-10-30
- 新增 .gitignore 排除 ssl-staging/(含私鑰,不可進 git)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 10:54:47 +08:00

3.3 KiB
Raw Blame History

Caddy 反向代理

  • 部署路徑:/opt/caddy
  • 使用 docker-compose.yaml 管理,--network host 模式
  • Volume 掛載:Caddyfilecaddy_data、SSL 憑證、tel-server 靜態檔案

操作腳本

./run.sh                        # docker-compose up -d
./stop.sh                       # docker-compose down
./restart.sh                    # stop + run
./shell.sh                      # docker exec -it caddy sh
./list-containers.sh            # docker-compose ps
./view-output-from-containers.sh  # docker-compose logs -f

路由規則Caddyfile

入口 後端 說明
tel.tpech.gov.tw:443 127.0.0.1:8888php 容器) 正式環境HTTPS
tel.tpech.gov.tw:443/phpmyadmin/* 10.200.251.40:1888 phpMyAdminstrip prefix 後轉發)
tel.tpech.gov.tw:80 127.0.0.1:8888 正式環境HTTP
:1443 127.0.0.1:6666php-staging 容器) 測試環境ISO27001
tel-server.tpech.gov.tw:80/443 /srv/tel-server 靜態檔案服務(用於 PKI 驗證 .well-known
:443 / :80 127.0.0.1:8888 其他網域的 fallback
:8081 健康檢查(回傳 "I am 8081"
  • auto_https off:不使用 Caddy 自動 HTTPS手動管理憑證

Caddy SSL 憑證

項目
網域 tel.tpech.gov.tw
簽發者 TWCA Secure SSL Certification Authority2026-04-16 起)
有效期 2026-04-15 ~ 2026-10-30(僅半年)
憑證路徑(主機) /opt/caddy/fullchain.pem/opt/caddy/privkey.pem
憑證路徑(容器內) /etc/caddy/ssl/fullchain.pem/etc/caddy/ssl/privkey.pem

前一張為中華電信 HiPKI2025-04-23 ~ 2026-04-23已備份至 /opt/caddy/hospital/ssl_tel_tpech_gov_tw_pre_2026_10_backup/

更新 Caddy 憑證

完整 SOP 見 sop-update-caddy-ssl.md。快速摘要:

# 1. 上傳新憑證到主機(經 /tmp 中轉避免權限問題)
scp fullchain.pem privkey.pem hospital_media:/tmp/
ssh hospital_media "sudo mv /tmp/fullchain.pem /tmp/privkey.pem /opt/caddy/ && \
  sudo chmod 644 /opt/caddy/fullchain.pem && \
  sudo chmod 600 /opt/caddy/privkey.pem"

# 2. 重啟 Caddy需要 sudo
ssh hospital_media "cd /opt/caddy && sudo ./restart.sh"

# 3. 驗證(本地連線最可靠,外部可能被防火牆/WAF 攔截)
ssh hospital_media "openssl s_client -connect 127.0.0.1:443 \
  -servername tel.tpech.gov.tw </dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -dates"

注意:醫院前端有防火牆做 TLS 終端,外部 openssl s_client 可能看到舊憑證。須另外通知網管更新。

憑證備份(/opt/caddy/hospital/

目錄 內容
hospital/ssl_tel_tpech_gov_tw_2026_10/ tel.tpech.gov.tw 2026 TWCA 憑證cert.zip + fullchain + key
hospital/ssl_tel_tpech_gov_tw_pre_2026_10_backup/ 更新前的舊 HiPKI 憑證備份
hospital/ssl_tel_tpech_gov_tw_2025/ tel.tpech.gov.tw 2025 年 HiPKI 憑證key + csr + fullchain
hospital/ssl_tel_server_tpech_gov_tw_2025/ tel-server.tpech.gov.tw 2025 年憑證key + csr + fullchain

相關文件