SQL Server 2025 RC0 以降の重大な変更として「SQL Server に対してのリンクサーバー設定の既定の暗号化設定の変更」があります。
SQL Server に対してリンクサーバーを設定した際に使用されるデータベースプロバイダーですが、SQL Server のバージョンによって異なっています。
- SQL Server 2017 以前: SQL Server Native Client (SNAC)
- SQL Server 2019 以降: Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)
SQL Server 2022 では OLE DB Driver のバージョンは 18 が使用されていたのですが、SQL Server 2025 からは 19 が使用されるようになります。
これにより、既定の暗号化設定が変更され、SQL Server 2025 から 従来通りの SQL Server に対してのリンクサーバーの設定を行うと、「信頼されていない期間によって証明書チェーンが発行されました」のエラーが発生します。
この点について、情報をまとめておきたいと思います。
Contents
MSOLEDBSQL version 19 の既定の暗号化設定
SQL Server 2025 および MSOLEDBSQL バージョン 19 に記載されていますが、SQL Server 2025 では、MSOLEDBSQL のバージョンは 19 となります。
MSOLEDBSQL のドキュメントの メジャーバージョンの違い に記載されていますが、19 からは暗号化のオプションのデフォルトが変わり、従来の「Encyprt=no」ではなく「Encrypt=Mandatory」(必須) がデフォルトの設定に変更されています。
この挙動は SQL Server 2025 から SQL Server に対してリンクサーバーを設定した場合も同一となり、デフォルトでは暗号化を行う設定で接続が行われます。
SQL Server では、デフォルトの状態でも暗号化された接続はサポートされているのですが、自己署名証明書を使用した暗号化となっています。
そのため、SQL Server 2025 からデフォルトの設定で SQL Server に対してリンクサーバーを設定しようとすると上述のエラーとなります。(SQL Server 2025 に対してのリンクサーバーの設定だけでなく、SQL Server 2022 以前のサーバーに対しての接続でも同様となります)
従来までと同様の動作にする方法
前述のとおり、SQL Server 2025 では、SQL Server に対してのリンクサーバーは MSOLEDB 19 が使用されるため、暗号化が必須となっています。
従来 (以前のバージョン) までと同様の動作とするのであれば、以前の OLEDB バージョンからの更新 の対応を行います。
本投稿で記載している内容は「従来のバージョンと同様で暗号化を行わない方法」となりますので、本質的な対応として暗号化を検討したほうが良いかと思います。
サーバーの種類で SQL Server を選択して接続する場合
リンクサーバーの「サーバーの種類」
を「SQL Server」で作成する場合、接続のオプションを指定することができません。そのため、「トレースフラグ 17600」をグローバルレベルで設定します。
トレースフラグを有効化する必要がありますが、この方法であれば、従来までと同等のリンクサーバーの作成 / 設定の利用で、暗号化接続を無効にして接続する方法となります。
その他のデータ ソースを選択して接続する場合
もう一つの方法が明示的に「Encrypt=Optional」を指定する方法です。
サーバーの種類として「SQL Server」を選択している場合はオプションを指定することはできませんが、「その他のデータ ソース」として「Microsoft OLE DB Driver for SQL Server」を指定した場合は、「プロバイダー文字列」にオプションを指定することが可能となりますので、前述の暗号化のオプションを指定します。
これらの方法を使用することで、従来と同様の暗号化なしの接続で接続することができます。
MSOLEDBSQL 19 のドキュメント
リンクサーバーの MSOLEDBSQL 19 についての情報は次のドキュメントから確認できます。
- Microsoft OLE DB ドライバー for SQL Server
- リンクサーバー(データベースエンジン)
- OLE DB での暗号化と証明書の検証
- レジストリの設定
- OLE DB Driver for SQL Server での接続文字列キーワードの使用
- SNAC アプリケーションをアップグレードした後の "信頼されていない機関によって証明書チェーンが発行されました" エラー
今回は暗号化接続を無効にする (従来の動作にする) ことで接続を行っていますが、暗号化を維持して接続を行う場合は上記のドキュメントを確認していく必要があります。
自己署名証明書を使用した暗号化について
SNAC アプリケーションをアップグレードした後の "信頼されていない機関によって証明書チェーンが発行されました" エラー には次の記述があります。
注意
現在、MSOLEDBSQL19 では、暗号化と信頼された証明書を使用せずにリンク サーバーを作成することはできません (自己署名証明書では不十分です)。 リンク サーバーが必要な場合は、MSOLEDBSQL のサポートされている既存のバージョンを使ってください。
MSOLEDBSQL 19 では、デフォルトの自己署名証明書 (サービス起動時に自動で生成されている自己署名証明書) を使用して、証明書を信頼 (TrustServerCertificate=Yes) することによるサーバーへの接続はできないようでしたのでこの点は注意が必要そうです。
デフォルトの自己署名証明書ではなく、証明書をインポートして SQL Server への接続を暗号化する 等の方法で、明示的に自己署名証明書を作成し、その証明書を信頼された証明書として認識させた場合、自己署名証明書を使用しても暗号化接続を行うことが可能です。
SQL Server 2025 で、SQL Server に対してリンクサーバーを作成する場合、暗号化接続はどのようにするかは考慮する必要があるのではないでしょうか。