x509 인증서 오류 이해
Go를 사용하여 MongoDB 서버에 연결할 때 인증서 유효성 검사 문제로 인해 오류가 발생할 수 있습니다. 이 오류는 TLS 인증에 사용되는 x509 인증서가 SAN(주체 대체 이름) 대신 레거시 CN(일반 이름) 필드를 사용할 때 발생합니다.
해결책: 인증서에 SAN 사용
이 문제를 해결하려면 CN 필드 대신 SAN을 사용하여 인증서를 다시 생성해야 합니다. SAN은 서버의 도메인 또는 호스트 이름을 식별하는 보다 안전하고 유연한 방법을 제공합니다.
SAN으로 인증서 생성
OpenSSL을 사용하여 CSR(인증서 서명 요청) 생성 루트 CA로 서명합니다.
<code class="sh">openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}" openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"</code>
CA 구성
다음 옵션을 사용하여 CA를 구성합니다.
[ ca ] default_ca = my_ca [ my_ca ] ... copy_extensions = copy [ my_cert ] basicConstraints = CA:FALSE nsComment = "generated by https://github.com/me/my-pki" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer [ policy_match ] # ensure CSR fields match that of delivered Cert countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional
인증서 확인
OpenSSL을 사용하여 결과 서버 인증서를 검사합니다.
<code class="sh">openssl x509 -in server.crt -noout -text</code>
이제 인증서에 SAN 섹션이 포함되어야 합니다.
X509v3 Subject Alternative Name: DNS:myserver.com
업데이트 SAN이 있는 인증서를 사용하면 이제 레거시 CN 필드와 관련된 오류 메시지를 트리거하지 않고 TLS 연결이 성공적으로 설정됩니다.
위 내용은 Go MongoDB 연결에서 x509 인증서 오류가 발생하는 이유는 무엇이며 SAN을 사용하여 문제를 해결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!