3 月 16 2018
開始用 Let’s Encrypt 的 wildcard certificate
2016 年自己寫過 改用 Let’s Encrypt 的 certificates,文內提到的 dehydrated 也持續在使用。
這幾天看到 Let’s Encrypt 貼出 ACME v2 and Wildcard Certificate Support is Live。
Let’s Encrypt 的 wildcard certificate 實作大概要注意以下幾點:
- 要用 ACME v2 compatible client(官方有提供列表: ACME Client Implementations)
- 不能用 HTTP challenge,改用 DNS challenge
使用 dehydrated 進行 DNS challenge 可以參考這幾份文件:
我選擇用 nsupdate 的方式(參考 dehydrated Wiki : example dns 01 nsupdate script),在 DNS master server 建立 _acme-challenge.{DOMAIN} 的 NS record,讓 hook script 透過 nsupdate 連線到指定的 name server 更新 TXT record 。
DNS 方面完成後,要記得佈署 hook script 與 nsupdate 使用的 key。
接著是調整語法,原本的語法:
/SOMEWHERE/dehydrated/dehydrated -c -d {網站hostname}
改為:
/SOMEWHERE/dehydrated/dehydrated \ -c -d *.{DOMAIN} \ -t dns-01 -k {HOOK_SCRIPT} \ --alias wildcard.{DOMAIN}
( –alias 指定的 wildcard.{DOMAIN} 會成為目錄名稱,用來存放憑證 )
9 月 2 2022
幫 Apache Tomcat 7/9 上 HTTPS
近日敝單位踩到 HSTS 的地雷,於是就著手解決問題…
先說地雷的引爆點: 新上線 example.com 這網站給了 “strict-transport-security: max-age=31536000; includeSubDomains” 這組 HTTP header,使得原本透過 Apache Tomcat 提供服務的 http://system.example.com.tw:8080/ 網頁瀏覽異常;因瀏覽器參照 HSTS 後,只把 “http://” 改為 “https://” ,瀏覽器不知道應該同步修改連接埠號(port 8080)。
因為這幾台伺服器的網頁服務僅使用 Apache Tomcat,沒有 https://httpd.apache.org/、nginx 等其他軟體佔用 port 80 與 443,用 iptables 作 port redirection 就可以擺平,調整的方式會比較簡單。
需要作的事的大概就這些:
Apache Tomcat 7 的 server.xml 用這段(某些參數視狀況調整):
Apache Tomcat 9 的 server.xml 用這段(某些參數視狀況調整),支援 HTTP/2:
iptables rules 增加以下這兩條:
分享此文:
By Joe Horn • WWW 0 • Tags: Apache Tomcat, HSTS, HTTP, HTTP Strict Transport Security, HTTPS