コンテンツにスキップ

プリザンター1.5以降でDBにSQL Serverを使用する際の接続文字列についての注意事項

概要

プリザンター1.5以降で使用する.NET 10から、SQL Serverへの接続時にTLS証明書検証がデフォルトで有効化されました。

この変更により、接続先のSQL Serverが有効なTLS証明書を提示しない場合、接続に失敗する可能性があります。プリザンター1.4以前で使用する.NET 8は、TLS証明書検証がデフォルトで無効化されていたため、証明書未設定のSQL Serverに対して接続できましたが、プリザンター1.5以降では以下の対応が必要です。

対応方法

  1. SQL ServerにTLS証明書を設定する
  2. 接続文字列にTrustServerCertificate=true;を追加する

このページでは、TLS証明書の設定をすぐに行えないユーザ向けに、2.の方法を説明します。

操作手順

1.Rds.jsonで設定している場合

編集前のRds.json(該当部分のみ)
    "SaConnectionString": "Server=(local);Database=master;UID=sa;PWD={※1};Connection Timeout=30;",
    "OwnerConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_Owner;PWD={※2};Connection Timeout=30;",
    "UserConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_User;PWD={※3};Connection Timeout=30;",
編集後のRds.json(該当部分のみ)

    "SaConnectionString": "Server=(local);Database=master;UID=sa;PWD={※1};Connection Timeout=30;TrustServerCertificate=true;",
    "OwnerConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_Owner;PWD={※2};Connection Timeout=30;TrustServerCertificate=true;",
    "UserConnectionString": "Server=(local);Database=#ServiceName#;UID=#ServiceName#_User;PWD={※3};Connection Timeout=30;TrustServerCertificate=true;",

{※1} SAアカウントのパスワード
{※2}、{※3} 任意のパスワード

2. システム環境変数で設定している場合

以下の各システム変数の値の末尾へ「TrustServerCertificate=true;」を追加してください。

  1. Implem.Pleasanter_Rds_SQLServer_OwnerConnectionString
  2. Implem.Pleasanter_Rds_SQLServer_SaConnectionString
  3. Implem.Pleasanter_Rds_SQLServer_UserConnectionString

TrustServerCertificate=true;を追記することの意味

接続文字列にTrustServerCertificate=true;を追記すると、クライアント側ではSQL Serverのサーバ証明書のチェーンを検証せずに(該当サーバ証明書を信頼して)、(暗号化以外の異常がある場合を除き)接続は必ず成功します。

サーバ証明書を導入していない場合、中間者攻撃などに対して無力になる可能性があり、使用は

  1. ローカルサーバ
  2. 開発用サーバ

など限定的な範囲に留めるべきとされています。

マイクロソフト社のドキュメントを併せて確認してください。

関連情報

インストール

バージョンアップ