Go で証明書を使用して HTTPS リクエストを送信する方法
別のポートで実行されているサーバーに HTTPS リクエストを行う場合、一般的に証明書関連のエラーが発生する場合があります。この問題は、サーバーの証明書が不明な認証局によって署名されており、デフォルトの HTTP クライアントが自己署名証明書を信頼していないために発生します。
この問題を解決するには、適切な CA 証明書を使用してサーバーの証明書を手動で検証する必要があります。 。 Go でこれを実行する方法に関するステップバイステップのガイドは次のとおりです。
CA 証明書を取得します。
証明書プールを作成します:
TLS オプションの構成:
カスタム トランスポートを使用した HTTP クライアントの作成:
例コード:
package main import ( "crypto/tls" "crypto/x509" "io/ioutil" "log" "net/http" ) func main() { // Read the CA certificate from file caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } // Create a certificate pool and add the CA cert caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) // Configure TLS options tlsConfig := &tls.Config{ RootCAs: caCertPool, } // Create an HTTP client with custom transport client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: tlsConfig, }, } // Send an HTTPs request _, err = client.Get("https://secure.domain.com") if err != nil { panic(err) } }
注:
CA 証明書がない場合は、独自の証明書を作成できます。自己署名証明書を生成する方法については、外部リソースを参照してください。
以上がGo で自己署名証明書を使用して HTTPS リクエストを行う方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。