首页  >  文章  >  后端开发  >  使用 Go 连接到 MongoDB 时如何修复“x509:证书依赖于旧版通用名称字段”错误?

使用 Go 连接到 MongoDB 时如何修复“x509:证书依赖于旧版通用名称字段”错误?

Patricia Arquette
Patricia Arquette原创
2024-10-28 05:51:30820浏览

How to Fix

错误:使用旧通用名称字段连接到服务器

尝试使用 Go 建立与 MongoDB 服务器的连接时,您可能会遇到错误:

failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

此错误表示用于 TLS 身份验证的证书包含通用名称 (CN) 字段,但缺少必要的主题备用名称 (SAN) 字段。 Go 的 TLS 实现在最近的版本中变得更加严格,现在它更倾向于 SAN 而不是 CN 来进行主机验证。

根本原因:

此错误的根本原因在于用于 TLS 身份验证的 SSL 证书配置错误。证书应具有与 MongoDB 服务器的主机名或 IP 地址匹配的 DNS SAN 字段。

解决方案:

要解决此错误,您需要重新生成 SSL带有 DNS SAN 字段的证书。这可以通过以下步骤来实现:

  1. 创建 CSR(证书签名请求):

    openssl req -new \
        -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \
        -key "${KEY}" \
        -addext "subjectAltName = DNS:${DNS}" \
        -out "${CSR}"
  2. 与您的根 CA 签署 CSR:

    openssl ca \
        -create_serial \
        -cert "${ROOT_CRT}" \
        -keyfile "${ROOT_KEY}" \
        -days "${CERT_LIFETIME}" \
        -in "${CSR}" \
        -batch \
        -config "${CA_CONF}" \
        -out "${CRT}"
  3. 检查生成的证书:

    openssl x509 -in server.crt -noout -text

您现在应该拥有一个带有 SAN 部分的证书,例如:

X509v3 Subject Alternative Name: 
    DNS:myserver.com

重新生成证书后,您可以使用它建立与 MongoDB 服务器的安全连接,而不会遇到通用名称错误。

以上是使用 Go 连接到 MongoDB 时如何修复“x509:证书依赖于旧版通用名称字段”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn