Skip to main content

Command Palette

Search for a command to run...

Go 1.18 有關 http.Client 的 TLS 變動

Updated
1 min read

前言

在 Go 1.17 升到 Go 1.18/1.19 時,對於那些會用到 http.Client 的 code ,有一個關鍵性的變動,那就是 TLS 的 version 預設值的改變。

通常來說,這個變動對於呼叫到比較新的 API 的程式都不太會有影響,但為了避免意外,Server 是否支援 TLS 1.2 仍然是需要檢查的

這次有關 TLS 的變動是甚麼

由於 TLS 1.0/1.1 在 2021 年被棄用 (RFC 8996: Deprecating TLS 1.0 and TLS 1.1),Go HTTP Client 從本來預設 TLS version 1.0 變更為 1.2。假如在想要在 Go 1.18 仍然使用 TLS 1.0 ,可以通過設置環境變數:GODEBUG=tls10default=1 來做到,但在 1.19 這個暫時性的方法也會被拔掉。只能在 Source Code 裡面更動。

如何確認 Server 的支援版本

可以用 curl 來檢查使用到的 API 是否支援 TLS version (man page):

 curl --tls-max 1.2 https://example.com
 curl --tls-max 1.3 --tlsv1.2 https://example.com

Ref

More from this blog

簡介 C++ 的 Type Erase (用多型和模板做 Duck Type)

起點 讓我們先從 template 出發:foo 需要一個 callback function。 template<typename Func> void foo(Func callback) { // ... callback(); } 但是這會讓編譯錯誤訊息有點模糊:假如 callback 並不是一個可以呼叫的函數指標,或者並不是一個 callable object ,那編譯器會說錯出在第四行。但是我們都希望,編譯器在呼叫函數時就幫我們指出:這不是 foo 想要的 call...

May 14, 20243 min read

帕秋莉的魔法筆記

45 posts

後端工程師。

不定時張貼一些寫扣時的筆記。