今回は Exchange 2013 のメールボックス サーバー (クライアント アクセスとメールボックスが共存するサーバーも含む) 上で自己署名証明書の有効期限が切れた際に発生してしまう問題についてご紹介いたします。
この問題は最近見つかった不具合となりますが、Exchange 2013 は既に延長サポート フェーズの製品であるため、残念ながら本問題に対する修正は見送られております。
なお、Exchange 2016 では内部動作が一部変更されていることから本問題は発生いたしません。
現象
メールボックスの役割がインストールされた Exchange 2013上で実施されている 2 つのプローブ (OutlookRpcSelfTestProve と OutlookRpcDeepTestProbe) が自己署名証明書の有効期限が切れた後からエラーで失敗するようになります。 具体的にはメールボックスの役割がインストールされた Exchange 2013 上で IIS の Web サイト (Exchange Back End) にバインドされている自己署名証明書の有効期限が切れた以降から 2 つのプローブが失敗するようになり、その結果として可能性管理の機能により該当サーバー上で以下の事象が発生してしまいます。
- アプリケーション プール MSExchangeRpcProxyAppPool のリサイクル
- Microsoft Exchange RPC Client Access サービスの再起動
なお、Exchange 2013 CU2-v2 など初期のバージョンでは上記以外にデータベースのフェールオーバーが実施される場合もございます。
ただし、Exchange 2013 CU3 以降では OutlookRpcSelfTestProve や OutlookRpcDeepTestProbe のプローブが失敗してもデータベースのフェールオーバーは実施されなくなっています。
- 補足
本不具合が発生している場合、ProbeResult に関するイベント ログにはそれぞれ以下の例外内容でエラーが記録されます。
[詳細] タブの ExecutionContext 項目には以下の例外が記録
Exception = System.Net.WebException: 基礎になる接続が閉じられました: SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした —> System.Security.Authentication.AuthenticationException: 検証プロシージャによると、リモート証明書は無効です。
[詳細] タブの ExecutionContext 項目には以下の例外が記録
Exception = Microsoft.Exchange.Rpc.ServerUnavailableException: Error 0x6ba (RPC サーバーを利用できません。) from ClientAsyncCallState.CheckCompletion: RpcAsyncCompleteCall
原因
Exchange 2013 のメールボックス サーバーにインストールされる自己署名証明書は組織内の Exchange Server から自動的に信頼されるように設計されています。 ただし、Exchange 2013 のメールボックス サーバー上で実施される 2 つのプローブ (OutlookRpcSelfTestProbe および OutlookRpcDeepTestProbe) に関しては自己署名証明書を自動的に信頼できない不具合があり、この不具合により自己署名証明書の有効期限が切れたタイミングで該当のプローブが失敗するようになります。
なお、Exchange 2013 のインストール時に作成される自己署名証明書は [コンピュータ アカウント] の [信頼されたルート証明機関] に登録されていますが、自己署名証明書を更新しただけでは [コンピュータ アカウント] の [信頼されたルート証明機関] には自動的には登録されません。
そのため、Exchange 2013 のメールボックス サーバー上で自己署名証明書を更新して IIS の Web サイト (Exchange Back End) にバインドする作業を実施しても、[コンピュータ アカウント] の [信頼されたルート証明機関] に登録していない場合にも該当のプローブが失敗する現象が発生いたします。
対処方法
証明書の更新作業は一般的にはクライアントからの要求を受け付けるクライアント アクセス サーバーでのみ必要となります。 ただし、本不具合を回避するためにも、Exchange 2013 をご利用のお客様は後述の手順を参考にメールボックス サーバー上の自己署名証明書を更新してくださいますようお願いいたします。 なお、クライアント アクセスの役割とメールボックスの役割を共存させているサーバー上でも本作業を明示的に実施いただく必要がございますのでご注意ください。
-作業概要
- IIS の Web サイト (Exchange Back End) にバインドされている自己署名証明書の確認
- 自己署名証明書を新規に発行
- 新規に発行した自己署名証明書を [コンピュータ アカウント] の [信頼されたルート証明機関] に登録
- 新規に発行した自己署名証明書を IIS の Web サイト (Exchange Back End) にバインド
- (必要に応じて) 他のサービスに割り当てている自己署名証明書を変更
1. IIS の Web サイト (Exchange Back End) にバインドされている自己署名証明書の確認
以下の手順は更新対象のメールボックス サーバー上で実施してください。
- インターネット インフォメーション サービス (IIS) マネージャーを起動します。
- [<サーバー名>] - [サイト] - [Exchange Back End] を右クリックして [バインドの編集] をクリックします。
- “種類” が https で “ポート” が 444 のエントリを選択した状態で [編集] をクリックします。
- [SSL 証明書] に設定されている証明書を確認します。(必要に応じて [表示] をクリックして証明書の詳細についても確認してください)
2. 自己署名証明書を新規に発行
Exchange 管理シェルから以下のコマンドを実行して自己署名証明書を新規に発行します。
1 | Get-ExchangeCertificate -Server "<MBX サーバー名>" -Thumbprint "<更新対象の自己署名証明書の拇印>" | New-ExchangeCertificate -Server "<MBX サーバー名>" -Service None |
なお、更新対象の自己署名証明書の拇印 (Thumbprint) に関しては以下のコマンドを実行することでも確認することができます。
1 | Get-ExchangeCertificate -Server "<MBX サーバー名>" | fl |
3. 新規に発行した自己署名証明書を [コンピュータ アカウント] の [信頼されたルート証明機関] に登録
以下の手順は更新対象のメールボックス サーバー上で実施してください。
- Microsoft 管理コンソールを起動します。([ファイル名を指定して実行] で “mmc” と入力して [OK] をクリックしてください)
- [ファイル] メニューから [スナップインの追加と削除] を選択します。
- [証明書] (コンピュータ アカウント) を追加して [OK] をクリックします。
- 左ペインから [証明書] - [個人] - [証明書] を選択します。
- 新規に発行した自己署名証明書を右クリックして [コピー] を選択します。
- 左ペインから [証明書] - [信頼されたルート証明機関] - [証明書] を選択します。
- 中央ペインの空白部分を右クリックして [貼り付け] を選択して該当の自己署名証明書をコピーします。
[コンピュータ アカウント] の [信頼されたルート証明機関] に登録後は Get-ExchangeCertificate で該当の自己署名証明書を確認すると RootCAType パラメータは “Registry” と表示されます。
4. 新規に発行した自己署名証明書を IIS の Web サイト (Exchange Back End) にバインド
以下の手順は更新対象のメールボックス サーバー上で実施してください。
- インターネット インフォメーション サービス (IIS) マネージャーを起動します。
- [<サーバー名>] - [サイト] - [Exchange Back End] を右クリックして [バインドの編集] をクリックします。
- “種類” が https で “ポート” が 444 のエントリを選択した状態で [編集] をクリックします。
- [SSL 証明書] に新規に発行した自己署名証明書を設定して [OK] をクリックします。
5. (必要に応じて) 他のサービスに割り当てている自己署名証明書を変更
メールボックスの役割のみをインストールしているサーバーなどでは以下の箇所も自己署名証明書のまま利用されている場合もあるかと存じます。
- IIS の Web サイト (Default Web Site) にバインドしている証明書
- Transport サービスの内部トランスポート証明書
上記に割り当てている自己署名証明書の有効期限が切れても特に問題はございませんが、これらの証明書も新規に発行した自己署名証明書に変更したい場合は Exchange 管理シェルから以下のコマンドを実行してください。
1 | Enable-ExchangeCertificate "<MBX サーバー名>" -Thumbprint "<新規に発行した自己署名証明書の拇印>" -Service IIS,SMTP |