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 中国語 Web サイトの他の関連記事を参照してください。