ホームページ  >  記事  >  バックエンド開発  >  Go MongoDB 接続で x509 証明書エラーがスローされるのはなぜですか? SAN を使用してそれを修正するにはどうすればよいですか?

Go MongoDB 接続で x509 証明書エラーがスローされるのはなぜですか? SAN を使用してそれを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 12:33:03595ブラウズ

Why is my Go MongoDB connection throwing a x509 certificate error, and how can I fix it using SANs?

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               = &quot;generated by https://github.com/me/my-pki&quot;
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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。