WebLogicの管理サーバーに署名済み証明書を導入する際、キーストアを、デモ・アイデンティティとデモ信頼
から、カスタム・アイデンティティとカスタム信頼
に変更すると思います。
この設定をアクティブ化した後、ノードマネージャを使ってWebLogicサーバーを起動しようとすると、サーバーXXXでは、マシンXXXに関連付けられているノード・マネージャにアクセスできません。
というエラーが表示され、起動できません。
ここでノードマネージャの接続タイプをプレーン
に設定して回避している例をネットで見かけますが、せっかく署名済み証明書を導入したのですから、それを使ってSSLで通信させるようにしてみましょう。
まず、管理サーバーの構成画面で設定したキーストア/秘密鍵は、管理コンソールへのアクセスだけに使われるのではありません。管理サーバーとノードマネージャの間の通信にも使われます。
管理コンソールでWebLogicサーバーの起動操作をすると、管理サーバーは、起動対象サーバーを受け持つノードマネージャに起動指示を出します。下の図のように、SSLを利用している場合(「マシン」設定でタイプにSSLを指定している場合)、管理サーバーは、管理サーバーの構成画面で設定したキーストア/秘密鍵を使用して、ノードマネージャとSSLで通信しようとします。
一方、ノードマネージャは、デフォルトでWebLogicのデモ証明書を使用してSSL通信します。管理サーバーがデモ証明書であった頃は、両方ともデモ証明書でしたから、問題なく通信できていました。しかし、管理サーバーがカスタム証明書を使用するようになった今、デモ証明書のままでは、証明書が異なることになり、接続できません。このため、サーバーXXXでは、マシンXXXに関連付けられているノードマネージャにアクセスできません。
というエラーになります。
この現象を回避するには、管理サーバーで使用する証明書と同じものを、ノードマネージャでも使用させる必要があります。ノードマネージャのキーストア/秘密鍵は、どこで設定するのでしょうか?nodemanager.properties
です。最低でも、5つの行を追加する必要があります。
KeyStores=CustomIdentityAndCustomTrust
CustomIdentityKeyStoreFileName=カスタム・アイデンティティ・キーストアのフルパス
CustomIdentityKeyStorePassPhrase=カスタム・アイデンティティ・キーストアのパスフレーズ
CustomIdentityAlias=秘密鍵の別名
CustomIdentityPrivateKeyPassPhrase=秘密鍵のパスフレーズ
編集が終わったら、ノードマネージャを再起動しましょう。管理対象サーバーが起動できるようになるはずです。
ちなみに、管理対象サーバーのほうにはSSLを指定しなくても起動できてしまいます。なぜでしょうか?ノードマネージャは、基本的に、管理対象サーバーのプロセスを作成するだけです。一旦管理対象サーバーが起動すれば、あとは管理サーバーと管理対象サーバーが直接連携します。この連携で使用する通信は、SSLではなく、平文です。
サーバー間の通信もSSLにするには、ドメインの構成画面で管理ポートを有効化する必要があります。サーバー間のSSL通信は、それぞれのサーバーの構成画面で設定したキーストア/秘密鍵を使って行われます。ドメインに含まれる全てのサーバーでSSLが有効化されていないと、管理ポートの有効化ができないのは、このような背景があります。
マニュアルなどを読んでも分かりづらかったので、書いてみました。お役に立てば幸いです。