新增分拆文件、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>
This commit is contained in:
79
docs/caddy.md
Normal file
79
docs/caddy.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Caddy 反向代理
|
||||
|
||||
- 部署路徑:`/opt/caddy`
|
||||
- 使用 `docker-compose.yaml` 管理,`--network host` 模式
|
||||
- Volume 掛載:`Caddyfile`、`caddy_data`、SSL 憑證、`tel-server` 靜態檔案
|
||||
|
||||
## 操作腳本
|
||||
|
||||
```bash
|
||||
./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:8888`(php 容器) | 正式環境,HTTPS |
|
||||
| `tel.tpech.gov.tw:443/phpmyadmin/*` | `10.200.251.40:1888` | phpMyAdmin(strip prefix 後轉發) |
|
||||
| `tel.tpech.gov.tw:80` | `127.0.0.1:8888` | 正式環境,HTTP |
|
||||
| `:1443` | `127.0.0.1:6666`(php-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 Authority(2026-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` |
|
||||
|
||||
> 前一張為中華電信 HiPKI(2025-04-23 ~ 2026-04-23),已備份至 `/opt/caddy/hospital/ssl_tel_tpech_gov_tw_pre_2026_10_backup/`。
|
||||
|
||||
## 更新 Caddy 憑證
|
||||
|
||||
完整 SOP 見 [sop-update-caddy-ssl.md](sop-update-caddy-ssl.md)。快速摘要:
|
||||
|
||||
```bash
|
||||
# 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) |
|
||||
|
||||
## 相關文件
|
||||
|
||||
- [SOP:更新 Caddy SSL 憑證](sop-update-caddy-ssl.md)
|
||||
- [SSL 憑證管理](ssl.md)
|
||||
- [主機與容器總覽](host.md)
|
||||
Reference in New Issue
Block a user