맞춤형 인증서를 사용하여 서버에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!