Windows ネットワーク

【Windows】Oracle WebLogicのhttps/SSL化手順を解説

前回WebLogicの初期設定を行いました。ただ初期設定を行っただけでは管理コンソールのhttpsの方にアクセスできなかったり、ノードマネージャーの起動に失敗したりとエラーで想定通り動いてくれない部分があります。特に管理対象サーバをhttps/SSLで起動したい場合ノードマネージャが稼働している必要があるためエラーの対応をしなくてはいけないのですが、これらのエラー事象に対する日本語の分かりやすい記事はあまり充実していません。というわけで今回は対応方法について詳しく解説していきます。

事象

動作環境

//Java
C:\Users\owner>java -version
java version "19.0.2" 2023-01-17
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)

//OS
C:\Users\owner>wmic os get caption
Caption
Microsoft Windows 10 Home

WebLogicのバージョン

再現手順

binファイル以下の「startWebLogic.cmd」及び「startNodeManager.cmd」を実行。

エラー内容

binファイル以下の「startWebLogic.cmd」または「startNodeManager」を実行すると以下のようなエラーが発生しhttpsの方の管理コンソールにアクセスできない、またノードマネージャが起動しない。ノードマネージャーが起動していないため、管理コンソールから管理対象サーバを起動しようとしてもエラーがでてしまう。

//startWebLogic.cmd実行時
<Emergency> <Security> <BEA-090034> <SSL weblogic.management.configuration.ConfigurationException: サーバー〇〇でアイデンティティ・キーストア・ファイルC:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\security\DemoIdentity.jksが見つかりませんをリスニングしていません。>
<BEA-002606> <サーバーはチャネル"DefaultSecure[iiops][2]"で リスニングするためのサーバー・ソケットを作成できません。アドレス〇〇が正しくない、または別のプロセスがポート〇〇を使用している可能性があります: java.io.IOException: サーバー〇〇でアイデンティテ ィ・キーストア・ファイルC:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\security\DemoIdentity.jks が見つかりません>
//startNodeManager.cmd実行時
<2023/02/12 19時57分27秒 日本標準時> <INFO> <アイデンティティ・キー・ストアをロードしています: FileName=C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\security\DemoIdentity.jks, Type=jks, PassPhraseUsed=true>
<2023/02/12 19時57分27秒 日本標準時> <SEVERE> <NodeManagerサーバーで致命的なエラーが発生しました>
weblogic.nodemanager.common.ConfigException: アイデンティティ・キー・ストア・ファイルが見つかりません: C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\security\DemoIdentity.jks
        at weblogic.nodemanager.server.SSLConfig.loadKeyStoreConfig(SSLConfig.java:225)
        at weblogic.nodemanager.server.SSLConfig.access$000(SSLConfig.java:33)
        at weblogic.nodemanager.server.SSLConfig$1.run(SSLConfig.java:118)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
        at weblogic.nodemanager.server.SSLConfig.<init>(SSLConfig.java:115)
        at weblogic.nodemanager.server.NMServer.<init>(NMServer.java:170)
        at weblogic.nodemanager.server.NMServer.getInstance(NMServer.java:135)
        at weblogic.nodemanager.server.NMServer.main(NMServer.java:596)
        at weblogic.NodeManager.main(NodeManager.java:29)
//管理対象サーバ起動時のエラー
メッセージ・アイコン - 警告 サーバー〇〇では、マシン〇〇に関連付けられているノード・マネージャにアクセスできません。
メッセージ・アイコン - 警告 選択されたすべてのサーバーは、この操作と互換性のない状態であるか、または実行中のノード・マネージャに関連付けられていません。または、リクエストしたアクションの実行は許可されていません。実行されるアクションはありません。

対応方法

エラーメッセージでググると公式サイトがヒットしますがオラクルのアカウントを持っていて、且つ𠮟るべきフローで組織との紐付けを行ってないと見れないようなので、それが出来ない・めんどくさい方のために対応手順を記載します。

https://support.oracle.com/knowledge/Middleware/1553115_1.html

まずはエラーメッセージ中にも記載されてますがドメインホームにDemoIdentity.jksがあるか確認してみましょう。私の場合Cドライブ直下にダウンロードしたので以下のディレクトリを確認しています。

C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\security\DemoIdentity.jks

確認したところ以下の通りDemoIdentity.jksがありませんでした。無いものを参照しようとしてるので先ほどのようなエラーが出ていたわけですね。初期設定でhttpsの設定したのにそれに必要なファイルがなんで作成されないの?と疑問に思った方がいるかもしれませんが、以下の通りDemoIdentity.jksが作成されない既知の不具合があるようです。

[Java, WLS] JDK 8u161、7u171以後ではDemoIdentity.jksが作成されない
https://orablogs-jp.blogspot.com/2018/11/demoidentityjks-is-not-created-when.html

なのでDemoIdentity.jksファイルを作成していくのですが、以下の手順で作成可能です。

1.setWLSEnvファイルを実行

$WL_HOME/server/binのフォルダに行くとWindows用のsetWLSEnvというファイルがあるのでこれを実行します。私の場合Cドライブ直下にダウンロードしたので以下のパスにありました。これを実行しないと次のステップのコマンド実行時に「エラー: メイン・クラスutils.CertGenを検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: utils.CertGen」といったエラーがでて実行に失敗するので注意してください。

C:\Oracle\Middleware\Oracle_Home\wlserver\server\bin

2.DemoIdentity.jksを作成するコマンドを実行

以下の順番でコマンドを実行してください。1つ目のコマンドでDemoIdentity.jksを作成する際に利用する証明書ファイルやキーファイルの作成を行い、2つ目のコマンドで実際にDemoIdentity.jksファイルを作成します。

//1つ目のコマンド
java utils.CertGen -keyfilepass DemoIdentityPassPhrase -certfile democert -keyfile demokey -strength 2048 -noskid

実行に成功すると以下のようなファイルがコマンドを実行したディレクトリに作成されます。

//2つ目のコマンド
java utils.ImportPrivateKey -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -keyfile demokey.pem -keyfilepass DemoIdentityPassPhrase -certfile democert.pem -alias demoidentity

1つ目を実行したうえでこのコマンドを実行するとDemoIdentity.jksが出力されます。

これでDemoIdentity.jksファイルを作成することができました。

3.DemoIdentity.jksファイルを指定のフォルダに移動する

DemoIdentity.jksファイルの作成が完了したらWebLogicの「security」フォルダに移動します。私の場合以下のパスでした。

//Cドライブ直下にインストールした場合
C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\security

こんな感じで配置。

4.WebLogicを再起動する

では問題なく作業できたか確認してみましょう。startWebLogic.cmdファイルを実行してWebLogicを起動します。成功していれば起動時に出ていたエラーメッセージの表示が変わり、以下のようにhttpsの方の管理コンソールにアクセスできるようになっていることが確認できると思います。

WebLogicのhttpsサーバを起動できるか試してみる

続いてWebLogicの管理コンソールがhttpsでアクセスできたら管理対象サーバもhttpsで起動できるか確認していきます。手順は以下の通り。

1.startNodeManager.cmdを実行する

NodeManagerが起動してないとWebLogicの管理対象サーバは起動できませんのでまずはstartNodeManager.cmdを実行します。ファイルの場所はStartWebLogic.cmdと同じディレクトリです。

2.管理コンソールにログインし管理対象サーバを起動する

[手順]
トップページ>環境>サーバー>作成した管理対象サーバ>「制御」タブ>画面下部の「起動」ボタンから対象のサーバを起動

DemoIdentity.jksの作成前はエラーが出て起動できませんでしたが以下の通り無事起動できるようになりました。

-Windows, ネットワーク