ホームページ >バックエンド開発 >Golang >SSL エラーが発生した場合に Golang で HTTPS 証明書を検証する方法

SSL エラーが発生した場合に Golang で HTTPS 証明書を検証する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-07 22:38:16322ブラウズ

How to Verify HTTPS Certificates in Golang When Encountering SSL Errors?

Golang を使用した HTTPS 証明書の検証

カスタム証明書を使用してサーバーに HTTPS リクエストを行う場合、安全な通信を確保するためにその信頼性を検証することが不可欠です。

そのようなシナリオの 1 つでは、別のポートで実行されているアプリケーションが、ホストされている REST API にアクセスしようとしたときに SSL エラーが発生しました。 HTTPS。このエラーの原因は、認識されない認証局でした。

この問題に対処するには、HTTPS リクエスト中に認証局をトランスポートに追加することが重要です。次のコード スニペットは、これを実現する方法を示しています。

package main

import (
    "crypto/tls"
    "io/ioutil"
    "log"
    "net/http"
    "crypto/x509"
)

func main() {
    // Read the root CA certificate from file
    caCert, err := ioutil.ReadFile("rootCA.crt")
    if err != nil {
        log.Fatal(err)
    }

    // Create an X.509 certificate pool and add the CA certificate
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    // Configure the TLS client to trust the CA
    tlsConfig := &tls.Config{
        RootCAs: caCertPool,
    }

    // Create a new HTTP client with the modified TLS configuration
    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: tlsConfig,
        },
    }

    // Make an HTTPS request using the client
    _, err = client.Get("https://secure.domain.com")
    if err != nil {
        panic(err)
    }
}

また、既存の CA 証明書が利用できない場合、ソリューションは独自の CA を生成し、その CA によって署名された証明書を発行することを提案します。次のコマンドは段階的なアプローチを提供します:

CA の生成:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt

CA によって署名された secure.domain.com の証明書の生成:

openssl genrsa -out secure.domain.com.key 2048
openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
#In answer to question `Common Name (e.g. server FQDN or YOUR name) []:` you should set `secure.domain.com` (your real domain name)
openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt

以上がSSL エラーが発生した場合に Golang で HTTPS 証明書を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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