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

Go에서 인증서를 사용하여 HTTPS 요청을 확인하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-11 00:34:10415검색

How to Verify HTTPS Requests Using Certificates in Go?

Go에서 인증서를 사용한 HTTPS 요청 확인

다른 포트에서 제공되는 HTTPS 지원 REST API와의 통신이 필요한 애플리케이션에서는 "x509: 알 수 없는 기관에서 서명된 인증서"와 같은 SSL 유효성 검사 오류가 발생하는 것이 일반적입니다. 이는 애플리케이션이 API의 인증 기관(CA)을 인식하지 못할 때 발생합니다.

이 문제를 해결하려면 요청의 전송 계층에 CA 인증서를 추가해야 합니다. 다음은 수행 방법을 보여주는 Go 코드 조각입니다.

package main

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

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

    // Create a certificate pool from the CA certificate.
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    // Configure the HTTP client with TLS settings.
    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                RootCAs: caCertPool,
            },
        },
    }

    // Make a GET request to the HTTPS URL.
    resp, err := client.Get("https://secure.domain.com")
    if err != nil {
        log.Fatal(err)
    }

    // Process the HTTP response as usual.
    fmt.Println(resp.Status)
}

인증서에 서명할 CA를 만들지 않은 경우 다음 단계를 참고하세요.

생성 CA:

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

인증서 생성 Secure.domain.com CA로 서명:

openssl genrsa -out secure.domain.com.key 2048
openssl req -new -key secure.domain.com.key -out secure.domain.com.csr

"일반 이름(예: 서버 FQDN 또는 사용자 이름) []:" 질문에 대한 응답으로 "secure.domain.com을 입력합니다. "(실제 도메인 이름).

openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt

위 내용은 Go에서 인증서를 사용하여 HTTPS 요청을 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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