>백엔드 개발 >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 요청을 하는 경우 보안 통신을 보장하기 위해 진위 여부를 확인하는 것이 중요합니다.

그러한 시나리오 중 하나에서는 별도의 포트에서 실행되는 애플리케이션이 HTTPS에서 호스팅되는 REST API에 액세스하려고 할 때 SSL 오류가 발생했습니다. 이 오류의 원인은 인식할 수 없는 인증 기관입니다.

이 문제를 해결하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.