#g0v-shadow
2018-09-04
mingtsay
20:01:32
@poga 目前已知會有多少層?如果用 whitelist 方式呢?
ttcat
20:36:17
「原本是 https 的網址,改成 g0v 後還是 https,就連不上沒有 https 憑證的對應的 shadow 網址了」這個我有點看不懂
ttcat
20:37:09
@mingtsay 主要是希望盡量不要走 whitelist 的方式,因為政府會一直有新網站,另外就是希望簡化別的國家的 implement 程序
mingtsay
20:37:18
因為要 https 一定要憑證,而我們不知道會有什麼網址這樣。
mingtsay
20:38:55
例如今天政府弄了 example.gov.tw 然後明天弄了 2018.example.gov.tw 之類的,那我們頂多能用 wildcard 做到給 example.g0v.tw (由 *.g0v.tw 提供),可是對於 2018.example.g0v.tw 就必須另外跑驗證程序了。
ttcat
20:39:32
對,但是我想的是,當 aaa.bbb.ccc.gov.tw 改成 aaa.bbb.ccc.g0v.tw 的時
1. 檢查是否有 aaa.bbb.ccc.g0v.tw 的 https 憑證
2. 若無,自動向 let’s encrypt 申請,並 redirect 到 shadow.g0v.tw/aaa.bbb.ccc.gov.tw
3. 若有,導向 https 網址
1. 檢查是否有 aaa.bbb.ccc.g0v.tw 的 https 憑證
2. 若無,自動向 let’s encrypt 申請,並 redirect 到 shadow.g0v.tw/aaa.bbb.ccc.gov.tw
3. 若有,導向 https 網址
mingtsay
20:39:32
我是有想過如果透過 certbot 在使用者第一次瀏覽的時候來跑 DV 會不會能解決這問題?
mingtsay
20:39:51
哦哦所以 ttcat 跟我想到同一個可的解法?
ttcat
20:40:08
最後一次跟 poga 討論是提了這個方案
ttcat
20:40:26
所以他在上面回「原本是 https 的網址,改成 g0v 後還是 https,就連不上沒有 https 憑證的對應的 shadow 網址了」
ttcat
20:40:33
我不太清楚什麼意思前陣子太忙沒追
mingtsay
20:40:44
沒憑證就先導向我們的 shadow portal 然後同時看要不要人工產或是自動產該 domain 的憑證?
ttcat
20:40:51
對
ttcat
20:41:14
然後下次有人連線到 shadow.g0v.tw/aaa.bbb.ccc.gov.tw 的時候,也會先檢查憑證有沒有申請過了
ttcat
20:41:22
如果有,就把 shadow.g0v.tw/aaa.bbb.ccc.gov.tw redirect 回去
tkirby
20:42:20
第一次 hit 也許可以導向一個暫存頁 等 ajax polling 收到通知自動重導向到 https 版本,這樣就可以無縫接軌?
ttcat
20:43:09
但暫存頁如何產生?
tkirby
21:06:19
頁面就靜態, nginx 設定在 reverse proxy miss 時連過去? polling 時直接看 URL 就知道要檢查哪個東西
ttcat
21:06:30
++
mingtsay
21:06:37
++
poga
21:42:02
我那句話的意思是,當使用者把 https://aaa.gov.tw 改成 aaa.g0v.tw 時,瀏覽器會保留使用的 protocol,所以會連往 https://aaa.g0v.tw。 這時候沒有憑證的話,chrome 就會直接顯示 protocol error 了
ttcat
2018-09-04 21:56:26
所以沒辦法設定一個判斷,如果沒有憑證,就 redirect?
poga
2018-09-04 21:58:05
瀏覽器會在傳送任何資料前先檢查憑證,憑證錯誤就不會傳資料了,所以沒辦法由 server 判斷後 redirect
ttcat
2018-09-04 22:01:52
okay 那我懂了
poga
21:44:15
第一次瀏覽的時候就自動申請是可行的,不過 let's encrypt 有 rate limit(每週每個 domain 50 個)
ttcat
21:56:26
所以沒辦法設定一個判斷,如果沒有憑證,就 redirect?
poga
21:58:05
瀏覽器會在傳送任何資料前先檢查憑證,憑證錯誤就不會傳資料了,所以沒辦法由 server 判斷後 redirect
ttcat
22:01:52
okay 那我懂了
ttcat
22:14:17
可是我不懂誒,如果第一次瀏覽,沒有 https 不就會直接出現 protocol error
ttcat
22:14:26
怎麼觸發程式去自動申請
mingtsay
22:14:40
certbot 吧或是 acme.sh
ttcat
22:15:10
hmm
ttcat
22:15:25
那 redirect 能不能寫在這種 script 最後面
poga
22:23:06
流程是
1. 瀏覽器問 server 「你有沒有 aaa.g0v.tw 的憑證」
2. server 發現自己沒有憑證,呼叫 certbot 去跟 let's encrypt 申請憑證
3. certbot 拿到憑證後,server 把這份剛拿到的憑證傳回去給瀏覽器說「我有憑證喔」
4. 瀏覽器確認憑證正確後,才開始傳資料
1. 瀏覽器問 server 「你有沒有 aaa.g0v.tw 的憑證」
2. server 發現自己沒有憑證,呼叫 certbot 去跟 let's encrypt 申請憑證
3. certbot 拿到憑證後,server 把這份剛拿到的憑證傳回去給瀏覽器說「我有憑證喔」
4. 瀏覽器確認憑證正確後,才開始傳資料
poga
22:24:19
所以,如果 certbot 有拿到憑證,那就能直接走 https 了,不需要 redirect。
poga
22:24:38
如果因為次數限制拿不到憑證,那瀏覽器就中斷連線了,沒機會 redirect