>  기사  >  백엔드 개발  >  \"x509: 인증서는 레거시 일반 이름 필드\"를 사용하므로 My Go TLS 연결이 실패하는 이유는 무엇입니까?

\"x509: 인증서는 레거시 일반 이름 필드\"를 사용하므로 My Go TLS 연결이 실패하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-28 02:22:31902검색

Why Does My Go TLS Connection Fail with

"x509: 인증서는 레거시 일반 이름 필드에 의존합니다." 오류로 인해 Go TLS 연결 실패

MongoDB에 TLS 연결을 설정하려고 할 때 Go를 사용하면 "연결 실패: x509: 인증서가 레거시 일반 이름 필드에 의존합니다." 오류가 발생할 수 있습니다. 이 문제는 인증서 ID에 대해 CN(일반 이름) 필드보다 SAN(주체 대체 이름)을 우선시하도록 업데이트된 인증서 유효성 검사에서 발생합니다.

근본 원인:

TLS 인증에 사용되는 인증서는 호스트 식별에 더 안전한 것으로 간주되는 SAN 대신 레거시 일반 이름 필드를 사용합니다. 현재 버전의 Go에는 SAN 사용을 강제하는 더 엄격한 인증서 유효성 검사가 있습니다.

해결책:

이 문제를 해결하려면 다음을 확인하여 인증서 자체를 수정해야 합니다. SAN이 포함되어 있다는 것입니다. 여기에는 적절한 SAN 필드를 사용하여 새 인증서를 생성하거나 이를 포함하도록 기존 인증서를 재구성하는 작업이 포함됩니다.

소스 수정:

  1. CSR(인증서 서명 요청): OpenSSL과 같은 도구를 사용하여 원하는 호스트 이름에 대한 SAN 필드를 포함하는 CSR을 생성합니다.
  2. 루트 CA로 CSR에 서명: CSR에 서명하기 위해 원본 인증서를 발급한 루트 인증 기관(CA)은 포함된 SAN으로 새 인증서를 생성합니다.

새 인증서 검사:

다음 명령을 사용하여 검사하여 새로 생성된 인증서에 SAN 필드가 있는지 확인합니다.

openssl x509 -in server.crt -noout -text

참고:

인증서를 생성한 후 SAN을 사용하면 Go 코드와 함께 이를 사용하여 "x509: 인증서는 레거시 일반 이름 필드에 의존합니다" 오류가 발생하지 않고 TLS 연결을 설정할 수 있습니다. 새 인증서가 사용되도록 하려면 Go 코드에서 인증서 파일을 업데이트하고 연결 프로세스를 다시 시작해야 할 수도 있습니다.

위 내용은 \"x509: 인증서는 레거시 일반 이름 필드\"를 사용하므로 My Go TLS 연결이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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