使用postgres:17 image下去改,然後透過環境變數設置了user password db,之後就是改了:
1. pg_hba多一行: hostssl all*3 cert clientcert=verify-full
2. postgresql.conf(被註解掉的版本是我手動簽發的很多SAN的憑證跟key(web.*是sa.key簽的,chain.*是cat web.* sa.* 而來的),現在使用的from_caddy是從web服務中/root/.local/share/caddy/certificates/acme-8080-acme-acme-directory/postgres.111550053.cs.nycu透過volumes同步過來的資料夾)
ssl = on
ssl_ca_file = 'certs/sarootca.crt'
ssl_cert_file = 'certs/from_caddy/postgres.111550053.cs.nycu.crt'
#ssl_cert_file = 'certs/chain.crt'
ssl_key_file = 'certs/from_caddy/postgres.111550053.cs.nycu.key'
#ssl_key_file = 'certs/web.key
3. client端的crt跟key,我有發現我原本測試用的judge.crt誤用sarootca.key直接簽,所以我剛剛重新測試並生成了新的,改成用sa簽發並cat judge.crt sa.crt成post_chain.key來連線還是能成功
key跟csr生成是這樣,之後的驗證見附圖:
:~/hw3$ openssl genrsa -out judge.key 2048
:~/hw3$ openssl req -new -key judge.key -out judge.csr -subj "/CN=judge"
關於http3的部分,誠如助教所說,確實如果用腳本連續只針對web跑down -> up或是restart後立刻接curl 會失敗,不管是用哪種憑證,但如果一次重啟所有container就會其他人在卡時間所以我測了down up跟 restart各4次是都成功,所以應該不是這個原因?
bogay.cs12 在 2025年12月25日 星期四下午6:18:52 [UTC+8] 的信中寫道: