皆さん、こんにちは。 SQL Server/Windows Azure SQL Database サポートチーム の高原です。
今回は、SQL Server (Windows Azure 仮想マシン上の SQL Server 含む) への接続の暗号化 (SSL) に使用可能な証明書について紹介します。
まず初めに、SQL Server への接続の暗号化に使用可能な証明書には、以下のものがあります。
- 認証局 (CA) が発行した SSL 証明書
- 自己署名入り SSL 証明書
SQL Server では、起動時に自己署名入り SSL 証明書を自動的に作成しています。 そのため、証明書を明示的にインストールしなくとも、SQL Server がインストールされたサーバー上で SQL Server 構成マネージャ を起動し、SQL Server ネットワークの構成 – <インスタンス名> のプロトコル - 右クリック - プロパティ を開き、フラグ タブ – “強制的に暗号化”で “はい”を選択するだけで、自動的に作成される自己署名付き SSL 証明書が使用され、クライアント (WEB サーバー含む) 側で特に設定を実施しなくとも、クライアント から SQL Server への接続が、全て SSL による暗号化された通信で行われるようになります。
※ 設定変更後、SQL Server サービスの再起動は必要となります。
暗号化通信の設定が行われていない場合、クライアント - SQL Server 間の通信は、平文 (ネットワーク パケット上からデータを参照できる状態) で行われるため、セキュリティ強化の一環として、設定することは有効です。
しかしながら、自己署名入り SSL 証明書の場合、中間者攻撃(なりすまし) に対する保護は提供されないため、よりセキュリティを強固のものする必要がある場合は、認証局 (CA) で発行された SSL 証明書を使用することが望ましいでしょう。
補足の内容になりますが、認証局 (CA) で発行された SSL 証明書を使用するほうが、セキュリティ観点から言えば望ましいのですが、仮に、WEB サーバーは外部に公開し、SQL Server は 非公開ネットワーク (イントラ ネット) に設置されている場合は、お客様 クライアント - WEB サーバー間は、認証局 (CA) で発行された SSL 証明書で SSL 通信を行い、WEB サーバー – SQL Server 間は、自己署名入り SSL 証明書で SSL 通信を行うだけでも、セキュリティ強化になることが推測されます。
※ 非公開ネットワーク 内に中間者攻撃用サーバーが設置された場合は、セキュリティの脅威となります。
なお、認証局 (CA) で発行された SSL 証明書 であったとしましても、以下の要件を満たしていない場合は、SQL Server への接続の暗号化に使用することができない点 について注意が必要です。
- 現在のシステム時刻が証明書の “有効期限の開始日” (Valid from プロパティ) から “有効期限の終了日” (Valid to プロパティ) までの範囲内であること。
- 証明書がサーバー認証として使用され、証明書の Enhanced Key Usage プロパティが Server Authentication (1.3.6.1.5.5.7.3.1) に指定されていること。
- 証明書が AT_KEYEXCHANGE の KeySpec オプションを使用して作成されていること
- 証明書の “Subject” プロパティで、共通名 (CN) が サーバー コンピュータのホスト名 または、完全修飾ドメイン名 (FQDN) と同一であること。 ただし、AlwaysOn フェールオーバー クラスター インスタンス の場合は、共通名 (CN) が 仮想サーバーの完全修飾ドメイン名 (FQDN) と同一であること。
- 証明書が ローカル コンピュータの証明書ストア - 個人 - 証明書にインストールされていること。
※ 使用予定の SSL 証明書が上記の 1、2、3 の要件を満たしているかにつきましては、証明書の発行元へ確認ください。
ファイル名を指定して実行 – mmc – ファイル – スナップインの追加と削除 – 証明書 - 追加 – コンピュータ アカウント - 次へ - ローカル コンピュータ - 完了 – OKと選択することにより、ローカル コンピュータ 上の証明書情報を確認することが可能です。
※ 本Blogの内容は、2014年4月 現在の内容となっております