我在嘗試一些基本示例以向網絡請求數據,但是對不同主機的所有請求都會導致SSL錯誤:x509: certificate signed by unknown authority
。 注意:我不是在代理後面,沒有任何形式的證書攔截正在發生,因爲使用捲曲或瀏覽器沒有問題。x509由未知權威機構簽名的證書
我目前正在使用的代碼樣本是:
package main
import (
"fmt"
"net/http"
"io/ioutil"
"os"
)
func main() {
response, err := http.Get("https://google.com")
if err != nil {
fmt.Printf("%s\n", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Printf("%s\n", string(contents))
}
}
編輯:代碼在Arch Linux的內核4.9.37-1-LTS運行。
編輯2:顯然/etc/ssl/certs/ca-certificates.crt
有版本之間的差異我的系統上,通過移除證書並重新安裝手動ca-certificates-utils
包,這個問題得到了解決。
您的代碼運行完全在我的本地機器上。你是直接在機器上還是在任何容器內運行? – sadlil
此代碼在Ubuntu Docker容器內運行良好 –
我正在運行Arch Linux內核版本4.9.37-1-lts。代碼在任何其他機器上工作正常,但不在此機器上。所有的 –