SNAC アプリケーションをアップグレードした後の "信頼されていない機関によって証明書チェーンが発行されました" エラー
データベース アプリケーションのドライバーとしての SQL Server Native Client 11.0 (SNAC) のサポートは、2022 年 7 月 12 日に終了しました。 SNAC 11.0 を使用するすべてのアプリケーションは、新しいバージョンのドライバーを使用するように更新する必要があります (「
- Microsoft OLE DB Driver 19 for SQL Server にアップグレードされました
- Microsoft ODBC Driver 18. にアップグレードされましたx for SQL Server
MICROSOFT OLE DB Driver 19 for SQL Server (Provider=MSOLEDBSQL19) を使用するように SQL Server Native Client 11.0 (Provider=SQLNCLI11) アプリケーションを最近アップグレードした場合、次のようなエラー メッセージが表示されることがあります。
[Microsoft OLE DB Driver 19 for SQL Server]: クライアントが接続を確立できません
[Microsoft OLE DB Driver 19 for SQL Server]: SSL プロバイダー: 証明書チェーンは、信頼されていない機関によって発行されました。
原因
これらのエラーは、次の条件が両方とも当てはまる場合に発生します。
SQL Server インスタンスの Force 暗号化 設定は No に設定されます。
クライアント 接続文字列で暗号化プロパティの値が明示的に指定されていないか、Encryption オプションが DSN で明示的に設定または更新されませんでした。
このエラーは、クライアント ドライバーの既定の動作が変更されたために発生します。 古いバージョンのクライアント ドライバーは、既定でデータ暗号化が OFF であると想定するように設計されています。 新しいドライバーでは、この設定が既定で ON であると想定しています。 データ暗号化は ON に設定されているため、ドライバーはサーバーの証明書の検証を試み、失敗します。
ソリューション
解決策 1: Microsoft OLE DB Driver for SQL Server 18.x を使用します。 Microsoft OLE DB Driver for SQL Server の リリース ノートからドライバーをダウンロードできます。
解決策 2: アプリケーション 接続文字列 プロパティで、Encrypt/Use Encryption for Data の設定に対して Yes または Mandatory の値が既に指定されている場合は値を No または Optional に変更。 たとえば、「Use Encryption for Data=Optional」とします。 接続文字列で Encrypt/Use Encryption for Data の値が指定されていない場合は接続文字列に Use Encryption for Data=Optional を追加します。 詳細については、「Encryption and certificate validation」 (暗号化と証明書の検証) を参照してください。
解決策 3: 接続文字列に
;TrustServerCertificate=true
を追加します。 この場合、クライアントは、検証なしで証明書を信頼するように強制されます。-
Note
現在、MSOLEDBSQL19 では、暗号化と信頼された証明書を使用せずにリンク サーバーを作成することはできません (自己署名証明書では不十分です)。 リンク サーバーが必要な場合は、MSOLEDBSQL のサポートされている既存のバージョンを使ってください。