자체 서명된 서버 인증서로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!