首页 > 后端开发 > Golang > 正文

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

Patricia Arquette
发布: 2024-10-28 05:51:30
原创
817 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!