ホームページ >バックエンド開発 >Golang >Go で自己署名証明書を使用して HTTPS リクエストを行う方法は?

Go で自己署名証明書を使用して HTTPS リクエストを行う方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-08 18:02:12302ブラウズ

How to Make HTTPS Requests with Self-Signed Certificates in Go?

Go で証明書を使用して HTTPS リクエストを送信する方法

別のポートで実行されているサーバーに HTTPS リクエストを行う場合、一般的に証明書関連のエラーが発生する場合があります。この問題は、サーバーの証明書が不明な認証局によって署名されており、デフォルトの HTTP クライアントが自己署名証明書を信頼していないために発生します。

この問題を解決するには、適切な CA 証明書を使用してサーバーの証明書を手動で検証する必要があります。 。 Go でこれを実行する方法に関するステップバイステップのガイドは次のとおりです。

  1. CA 証明書を取得します。

    • CA 証明書を取得します。サーバーの署名に使用された CA 証明書 (例: 「rootCA.crt」)
  2. 証明書プールを作成します:

    • x509.CertPool を初期化し、それに CA 証明書を追加します。 caCertPool.AppendCertsFromPEM(caCert).
  3. TLS オプションの構成:

    • 証明書を使用するように tls.Config を構成します。サーバーの検証用のプール証明書。
    • tls.Config で caCertPool を RootCAs に設定します。
  4. カスタム トランスポートを使用した HTTP クライアントの作成:

    • を使用する http.Client を作成します。ステップ 3 の TLS オプションで構成されたカスタム http.Transport。
    • トランスポートの TLSClientConfig を構成済みの tls.Config に設定します。

例コード:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。