>백엔드 개발 >Golang >Go를 사용하여 HTTPS 요청에서 서버 인증서를 어떻게 확인할 수 있나요?

Go를 사용하여 HTTPS 요청에서 서버 인증서를 어떻게 확인할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-12-11 07:14:12715검색

How Can I Verify Server Certificates in HTTPS Requests Using Go?

Golang을 사용하여 HTTPS 요청에서 서버 인증서 확인

HTTPS 웹사이트 또는 서비스에 액세스할 때 로컬 신뢰가 있는 경우 애플리케이션에 SSL 인증서 오류가 발생할 수 있습니다. 저장소에는 서버의 인증서를 발급한 인증 기관(CA)이 포함되지 않습니다. 인증서 확인을 무시하지 않고 보안 HTTPS 연결을 설정하려는 경우 이 문서에서는 Go의 HTTP 클라이언트 라이브러리를 사용하는 솔루션을 제공합니다.

인증서 확인을 무시하고 인증서 확인을 비활성화하려면 다음 코드 조각을 사용할 수 있습니다.

tr := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}

client := &http.Client{Transport: tr}

그러나 이 접근 방식은 보안 문제를 야기할 수 있으므로 프로덕션 환경에서는 권장되지 않습니다.

서버 인증서 확인

서버 인증서를 확인하려면 전송 구성에 CA 인증서를 추가해야 합니다. 다음은 예입니다.

package main

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

func main() {
    caCert, err := ioutil.ReadFile("rootCA.crt")
    if err != nil {
        log.Fatal(err)
    }
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                RootCAs:      caCertPool,
            },
        },
    }

    _, err := client.Get("https://secure.domain.com")
    if err != nil {
        panic(err)
    }
}

서버용 인증서 생성

CA 인증서가 없는 경우 CA 인증서와 함께 인증서를 생성할 수 있습니다. 다음 명령을 사용하여 서버:

  1. 생성 CA:
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  1. CA에서 서명한 도메인용 인증서 생성:
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

이 단계를 완료하면 올바른 인증서를 갖게 됩니다. Go에서 서버 인증서를 확인하는 HTTP 클라이언트를 구성했습니다. 이를 통해 지정된 서버와의 안전한 HTTPS 통신이 보장됩니다.

위 내용은 Go를 사용하여 HTTPS 요청에서 서버 인증서를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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