> 백엔드 개발 > Golang > Go에서 자체 서명된 인증서를 사용하여 HTTPS 요청을 만드는 방법은 무엇입니까?

Go에서 자체 서명된 인증서를 사용하여 HTTPS 요청을 만드는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-08 18:02:12
원래의
316명이 탐색했습니다.

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

Go에서 인증서를 사용하여 HTTPs 요청을 보내는 방법

다른 포트에서 실행되는 서버에 HTTPS 요청을 할 때 일반적으로 발생하는 인증서 관련 오류가 발생합니다. 이는 서버의 인증서가 알 수 없는 기관에 의해 서명되었으며 기본 HTTP 클라이언트가 자체 서명된 인증서를 신뢰하지 않기 때문에 발생합니다.

이 문제를 해결하려면 적절한 CA 인증서를 사용하여 서버의 인증서를 수동으로 확인해야 합니다. . Go에서 이 작업을 수행하는 방법에 대한 단계별 가이드는 다음과 같습니다.

  1. CA 인증서 획득:

    • 인증서 획득 서버 서명에 사용된 CA 인증서(예: 'rootCA.crt') 인증서.
  2. 인증서 풀 생성:

    • x509.CertPool을 초기화하고 다음을 사용하여 CA 인증서를 여기에 추가합니다. caCertPool.AppendCertsFromPEM(caCert).
  3. TLS 옵션 구성:

    • 인증서를 사용하도록 tls.Config 구성 서버의 인증서 확인을 위한 풀입니다.
    • 설정 tls.Config에서 RootCA에 대한 caCertPool.
  4. 사용자 정의 전송을 사용하여 HTTP 클라이언트 생성:

    • http 생성 .단계의 TLS 옵션으로 구성된 사용자 정의 http.Transport를 사용하는 클라이언트 3.
    • 전송의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿