>백엔드 개발 >Golang >자체 서명된 TLS 인증서를 사용할 때 'x509: 알 수 없는 기관에서 서명된 인증서' 오류를 해결하는 방법은 무엇입니까?

자체 서명된 TLS 인증서를 사용할 때 'x509: 알 수 없는 기관에서 서명된 인증서' 오류를 해결하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 21:30:11364검색

How to Resolve the

자체 서명된 인증서로 TLS 설정

자체 서명된 서버 인증서로 TLS 연결을 설정할 때 사용자는 "x509: 다음에 의해 서명된 인증서"를 자주 접하게 됩니다. 알 수 없는 권한' 오류. 이 문제는 클라이언트가 자체 서명된 인증서를 신뢰할 수 있는 기관으로 인식하지 못할 때 발생합니다.

이 오류를 해결하려면 문제는 인증서 생성 프로세스에 있습니다. 제공된 코드 조각은 자체 서명된 인증서를 생성하지만 "IsCA:true" 플래그 설정을 무시합니다. 이 플래그는 인증서를 인증 기관(CA)으로 지정하여 다른 인증서에 서명할 수 있도록 합니다.

수정된 코드는 다음과 유사해야 합니다.

인증서 생성:

func generateCertificate() {
    key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
    if err != nil {
        log.Fatal(err)
    }

    subject := x509.Certificate{
        SerialNumber: big.NewInt(42),
        Subject: pkix.Name{
            Organization: []string{"My Organization"},
        },
    }

    template := x509.Certificate{
        SerialNumber: big.NewInt(43),
        Subject:      subject.Subject,
        KeyUsage: x509.KeyUsageCertSign,
        IsCA:        true, // Setting IsCA to true designates the certificate as a CA
        ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
    }

    cert, err := x509.CreateCertificate(rand.Reader, &template, &template, &key.PublicKey, key)
    if err != nil {
        log.Fatal(err)
    }

    // Save the certificate and key to pem files
}

클라이언트 구성:

func clientSetup() (*tls.Config, error) {
    cert, err := ioutil.ReadFile("./cert.pem")
    if err != nil {
        return nil, err
    }

    certpool := x509.NewCertPool()
    certpool.AppendCertsFromPEM(cert)

    config := &tls.Config{
        RootCAs:    certpool,
        InsecureSkipVerify: true, //!!! Skip certificate verification for testing purposes only
    }

    return config, nil
}

참고: 프로덕션 환경의 경우 서버의 신뢰성을 보장하기 위해 인증서 확인을 활성화해야 합니다.

위 내용은 자체 서명된 TLS 인증서를 사용할 때 'x509: 알 수 없는 기관에서 서명된 인증서' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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