v12 アップグレード後の Azure SQL Database TLS ハンドシェイク エラー
Azure SQL Database インスタンスが v12 にアップグレードされた後、TLS ハンドシェイク エラーが発生する場合があります。このエラーは、サーバーによって提示された証明書がクライアントの接続文字列で指定されたホスト名と一致しない場合に発生します。
エラーの詳細
エラー メッセージは通常、次のことを示します。証明書は、クライアント接続で使用されるホスト名以外のホスト名に対して有効です。例:
TLS Handshake failed: x509: certificate is valid for tr12.northcentralus1-a.worker.database.windows.net, *.tr12.northcentralus1-a.worker.database.windows.net, not [server-name].database.windows.net
解決策
この問題を解決するには、クライアント接続文字列を更新して次のパラメータを含めます:
更新された接続文字列
更新された接続文字列は次のようになります。 :
Server=[server-name].database.windows.net;Port=1433;Database=[dbname];User ID=[user];Password=[pass];Trusted_Connection=False;Encrypt=True;Connection Timeout=30;TrustServerCertificate=True;hostNameInCertificate=*.database.windows.net;
説明
以前のバージョンの Azure SQL Database では、サーバーの証明書は常にクライアント接続文字列で指定されたホスト名と一致していました。ただし、v12 では、これは保証されなくなりました。 TrustServerCertificate を True に設定し、hostNameInCertificate に正しいホスト名を指定すると、証明書を受け入れて接続を適切に確立するようにクライアントに指示できます。
注:
Azure portal では、TrustServerCertificate を False に設定することを推奨しています。これにより、場合によっては TLS ハンドシェイク エラーが発生する可能性があります。これらのエラーが発生した場合は、TrustServerCertificate を True に設定し、hostNameInCertificate を接続文字列に追加すると、問題が解決されるはずです。
以上がAzure SQL Database を v12 にアップグレードした後、TLS ハンドシェイク エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。