久しぶりに稼働させたOracle VM環境を操作するため、Oracle VM Managerにブラウザからログインしようとしたら応答がない・・・
Oracle VM Managerを稼働させているLinuxにログインして「systemctl status」を実行してもサービスの起動に失敗しているわけでもなさそうだ。
「systemctl status ovmm」でも特にコレといったものはない。
/var/log 以下にそれっぽいログがないので、ドキュメントを確認・・・Oracle VM 管理者ガイド「13.3 Oracle VM Managerのトラブルシューティング」に /u01/app/oracle/ovm-manager-3/domains/ovm_domain/servers/AdminServer/logs ディレクトリにログが出力されている、ということなので確認
ざらざらーっと、AdminServer.log ログを見ていくと、「com.oracle.appfw.ovm.coreinferface.ventprocessing.EventPollerTask」で「com.sun.jersey.api.client.ClientHandlerException: jav a.net.ConnectException: 接続を拒否されました (Connection refused)」といったものが多数見受けられる。
おそらくなにかサービスがうまく動作していないんだろうなぁ、とさらに見ていくと、SSL証明書を読み込んだログのあたりで「Identity certificate has expired:」とか「Signature: ~ の期限が切れています。」といったものが・・・
お?これが問題か?とさらに深掘り
Oracle VM 管理者ガイド「2.2.2 証明書構成の表示」に/u01/app/oracle/ovm-manager-3/ovm_upgrade/bin/ovmkeytool.sh show コマンドで状態確認などができる、ということがわかった。
続いて「Oracle VM Manager SSL Certificates ReGeneration with ovmkeytool.sh」に、SSL証明書の更新を行うという、そのものの手順があることを見つけた。
しかし・・・試してみると、ovmkeytool.shの実行にはOracle VM Managerインストール時にweblogicユーザに対して設定したパスワードが必要とのことだった。
Oracle VM管理者ガイド「4.2 Oracle VM Managerのユーザー・パスワードの変更」にあるように、通常は、Oracle VM Managerのadminアカウントと一緒にしてることが多いらしい
が・・・それを使ってみても接続できなかった。
weblogicユーザのパスワードを初期化する方法がないかを確認していたところ、WebLogicを自動起動させる仕組みで使われているAESで暗号化されたユーザ名とパスワード文字列がかかれたテキストファイルを利用すると、設定されているパスワードがなんであるのかを確認できる、ということがわかった。
「How to Decrypt/Encrypt WebLogic and Datasource Password via WLSDM?」
上記はweblogic汎用の手順になっているので、Oracle VM Managerの場合に即した手順で確認していく。
まず、WebLogic Scripting Tool(WLST)を起動する必要があるので、そのパスを確認する。
[root@ovm security]# find /u01 -print |grep wlst.sh
/u01/app/oracle/Middleware/oracle_common/common/bin/wlst.sh
/u01/app/oracle/Middleware/wlserver/common/bin/wlst.sh
/u01/app/oracle/ovm-manager-3/ovm_wlst/bin/wlst.sh
[root@ovm security]#
3種類出てきたが、ovm-manager-3以下にあるやつだろう、とそれを使う
また、WebLogic起動時に読み込まれているファイルは /u01/app/oracle/ovm-manager-3/domains/ovm_domain/servers/AdminServer/security/boot.properties なので、その内容を確認
[root@ovm security]# cat /u01/app/oracle/ovm-manager-3/domains/ovm_domain/servers/AdminServer/security/boot.properties
# Generated by Configuration Wizard on Fri May 28 17:13:40 JST 2021
username={AES}<文字列>=
password={AES}<文字列>=
[root@ovm security]#
WLSTは環境変数MW_HOMEを設定する必要があるので、/u01/app/oracle/Middlewareと設定して起動
[root@ovm security]# export MW_HOME=/u01/app/oracle/Middleware
[root@ovm security]# echo $MW_HOME
/u01/app/oracle/Middleware
[root@ovm security]# /u01/app/oracle/ovm-manager-3/ovm_wlst/bin/wlst.sh
WebLogic Scripting Tool(WLST)を初期化しています...
WebLogic Server Administration Scripting Shellへようこそ
使用可能なコマンドに関するヘルプを表示するには、help()と入力してください
wls:/offline>
Oracle VM Managerではdomainに相当するディレクトリは /u01/app/oracle/ovm-manager-3/domains/ovm_domain であるようなので、以下を設定
wls:/offline> domain="/u01/app/oracle/ovm-manager-3/domains/ovm_domain"
wls:/offline> service = weblogic.security.internal.SerializedSystemIni.getEncryptionService(domain)
wls:/offline>
最後に暗号化文字列を埋め込んでrintコマンドを実行
wls:/offline> print "Weblogic server Admin password : %s" %encryption.decrypt("{AES}<文字列>=")
Weblogic server Admin password : Password123
wls:/offline>
え・・・なんでPassword123 なんて設定してんの???と疑問がわきつつも、とりあえずweblogicユーザのパスワード解読に成功
続いて本題のSSL証明書の更新を実施
証明書関連ファイルは下記に配置されているようだ
/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security
/u01/app/oracle/ovm-manager-3/domains/ovm_domain/config
更新は「/u01/app/oracle/ovm-manager-3/ovm_upgrade/bin/ovmkeytool.sh check」を実行して行う
基本的に標準値でよいのだが、いくつか気をつけるべきポイントがあった。
[root@ovm security]# /u01/app/oracle/ovm-manager-3/ovm_upgrade/bin/ovmkeytool.sh setup
6 12, 2024 1:22:41 午後 oracle.security.jps.JpsStartup start
情報: JPSの初期化中です。
6 12, 2024 1:22:42 午後 oracle.security.jps.JpsStartup start
情報: Jpsが開始されました。
Oracle VM Manager is currently configured to use CA keystore at:
/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmca.jks
Do you wish to generate a new key and/or specify a different keystore? [yes]
Generate new CA keystore (as opposed to specifying an existing keystore)? [yes]
Path for CA keystore: [/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmca.jks]
A file already exists at the path /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmca.jks
Is it ok to ovewrite this file with your new keystore? [no] yes
1個目が↑の既存ファイルを置き換えるか、というもの
置き換えるので「yes」と入力
Oracle VM Manager is currently configured to use the SSL Trust-store at:
/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmtrust.jks
Do you wish to use this existing trust-store location? [yes]
Validity in months: [120]
Key distinguished name is "CN=OVM CA 0004fb0000010000615876ff13b9da0d, OU=Oracle VM Manager, O=Oracle Corporation, L=Redwood City, ST=California, C=US". Use these values? [yes]
You may either specify passwords or use random passwords.
If you choose to use a random password, only WebLogic, the Oracle VM Manager,
and this application will have access to the information stored in this
keystore.
Use random passwords? [yes]
Generating CA key and certificate and persisting them to the keystore...
Oracle VM Manager is currently configured to use SSL keystore at:
/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmssl.jks
Do you wish to generate a new key and/or specify a different keystore? [yes]
Generate new SSL keystore (as opposed to specifying an existing keystore)? [yes]
Path for SSL keystore: [/u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmssl.jks]
A file already exists at the path /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmssl.jks
Is it ok to ovewrite this file with your new keystore? [no] yes
2個目も上書きするか、なので「yes」
The hostname should be the fully qualified hostname of the system
(this is the hostname you'd use to access this system from outside the
local domain). Depending on your machine setup the value below may not be
correct.
Fully qualified hostname: [ovm]
Validity in months: [27] 120
で、3つ目が最大の罠でした。
証明書の有効期限、初期値が「27ヶ月」でした。
これを設定した関係者に聞くと、あー、たしかにそれくらいの時期にインストールしてたな、とのこと・・・
このせいで止まってたのか。
とりあえず120ヶ月を指定して進めた
Key distinguished name is "CN=ovm, OU=Oracle VM Manager, O=Oracle Corporation, L=Redwood City, ST=California, C=US". Use these values? [yes]
Alternate hostnames (separated by commas): [ovm]
Generating SSL key and certificate and persisting them to the keystore...
Updating keystore information in WebLogic
Oracle MiddleWare Home (MW_HOME): [/u01/app/oracle/Middleware]
WebLogic domain directory: [/u01/app/oracle/ovm-manager-3/domains/ovm_domain]
WebLogic server name: [AdminServer]
WebLogic username: [weblogic]
WebLogic password: [********]
WLST session logged at: /tmp/wlst-session138870891195064865.log
[root@ovm security]#
これで証明書更新に成功
Oracle VM Managerを再起動
[root@ovm security]# systemctl stop ovmm
[root@ovm security]# systemctl start ovmm
[root@ovm security]#
再起動後、WebLogicとアプリケーション間でいろいろ設定が必要なようで、用意されている証明書更新スクリプトを実行 /u01/app/oracle/ovm-manager-3/bin/configure_client_cert_login.sh
[root@ovm logs]# /u01/app/oracle/ovm-manager-3/bin/configure_client_cert_login.sh
WebLogic Scripting Tool(WLST)を初期化しています...
WebLogic Server Administration Scripting Shellへようこそ
使用可能なコマンドに関するヘルプを表示するには、help()と入力してください
2024-06-12 13:30:12,297 [main] INFO ovm.wlst.commands - Connecting using URL t3://localhost:7001
ロケーションがserverRuntimeツリーに移動しました。これは、DomainMBeanをルートとする読取り専用のツリーです。
詳細は、help('domainConfig')を使用してください
2024-06-12 13:30:13,823 [main] INFO ovm.wlst.commands - Undeploying ovm_console
アプリケーションovm_consoleをアンデプロイしています ...
<2024/06/12 13時30分14秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_console [アーカイブ: null]のundeploy操作をAdminServer に初期化しています。>
.アプリケーションのアンデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: undeploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
すでにドメイン構成ツリーを参照しています
2024-06-12 13:30:17,654 [main] INFO ovm.wlst.commands - Undeploying ovm_core
アプリケーションovm_coreをアンデプロイしています ...
<2024/06/12 13時30分17秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_core [アーカイブ: null]のundeploy操作をAdminServer に初期 化しています。>
........アプリケーションのアンデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: undeploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
2024-06-12 13:30:42,942 [main] INFO ovm.wlst.domainbuilder.Domain - Stopping AdminServer...
Stopping Weblogic Server...
WebLogic Scripting Tool(WLST)を初期化しています...
WebLogic Server Administration Scripting Shellへようこそ
使用可能なコマンドに関するヘルプを表示するには、help()と入力してください
ユーザーID weblogicでt3://localhost:7001に接続しています ...
ドメイン"ovm_domain"に属する管理サーバー"AdminServer"に。が正常に接続されました
警告: サーバーへの接続に安全でないプロトコルが使用
されました。通信セキュリティを確保するには、かわりにSSLポートまたは
管理ポートを使用する必要があります。
AdminServerへの接続中にサーバーAdminServerをforce=falseで停止しています...
WebLogic Serverから切断されました: AdminServer
WLSTからWebLogic Serverへの接続が失われました。
これは、サーバーが停止されたか、または分離された場合に
発生することがあります。サーバーが使用可能になったら再接続する必要が
あります。
WebLogic Serverから切断されました: AdminServer
WebLogic Scripting Toolを終了しています。
Done
Stopping Derby Server...
WLSTからWebLogic Serverへの接続が失われました。
これは、サーバーが停止されたか、または分離された場合に
発生することがあります。サーバーが使用可能になったら再接続する必要が
あります。
Derby server stopped.
WebLogic Serverから切断されました: AdminServer
2024-06-12 13:30:48,511 [main] INFO ovm.wlst.domainbuilder.Domain - Starting AdminServer...
2024-06-12 13:30:48,516 [main] INFO ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:30:58,591 [main] INFO ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:31:09,546 [main] INFO ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:31:20,692 [main] INFO ovm.wlst.domainbuilder.Domain - Trying to connect to t3://localhost:7001...
2024-06-12 13:31:21,695 [main] INFO ovm.wlst.domainbuilder.Domain - Connected.
2024-06-12 13:31:21,799 [main] INFO ovm.wlst.domainbuilder.Domain - AdminServer state is RUNNING
2024-06-12 13:31:21,799 [main] INFO ovm.wlst.commands - Deploying ovm_core
/u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_core/app/ovm_core_3.4.7.244.earのアプリケーションをターゲットAdminServerにデプロイしています(upload=false) ...
<2024/06/12 13時31分22秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_core [アーカイブ: /u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_core/app/ovm_core_3.4.7.244.ear]のdeploy操作をAdminServer に初期化しています。>
...アプリケーションのデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: deploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
すでにドメイン構成ツリーを参照しています
すでにドメイン構成ツリーを参照しています
2024-06-12 13:31:32,213 [main] INFO ovm.wlst.domainbuilder.Domain - Created a user named appframework
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/u01/app/oracle/ovm-manager-3/ovm_cli/lib/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/u01/app/oracle/Middleware/wlserver/modules/features/weblogic.server.merged.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
6 12, 2024 1:31:32 午後 oracle.security.jps.JpsStartup start
情報: JPSの初期化中です。
6 12, 2024 1:31:34 午後 oracle.security.jps.JpsStartup start
情報: Jpsが開始されました。
2024-06-12 13:31:35,978 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Writing cacert.pem
2024-06-12 13:31:35,979 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Importing cacert.pem with alias ovmca
2024-06-12 13:31:36,350 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Generating key pair for appframework in /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmclient.jks
2024-06-12 13:31:37,016 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Exporting clientcert.pem from /u01/app/oracle/ovm-manager-3/domains/ovm_domain/security/ovmclient.jks
2024-06-12 13:31:37,238 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Reading clientcert.pem
2024-06-12 13:31:37,239 [main] INFO com.oracle.appfw.ovm.ws.client.SSLClientUtil - Signing certificate
2024-06-12 13:31:37,321 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Writing clientcert.pem
2024-06-12 13:31:37,321 [main] INFO com.oracle.appfw.ovm.ws.client.KeytoolHelper - Importing clientcert.pem with alias appframework
2024-06-12 13:31:37,991 [main] INFO com.oracle.appfw.ovm.ws.client.SSLClientUtil - Deleting cacert.pem
2024-06-12 13:31:37,991 [main] INFO com.oracle.appfw.ovm.ws.client.SSLClientUtil - Deleting clientcert.pem
2024-06-12 13:31:38,004 [main] INFO ovm.wlst.commands - Deploying ovm_console
/u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_console/app/ovm_console_3.4.7.244.earのアプリケーションをターゲットAdminServerにデプロイしています(upload=false) ...
<2024/06/12 13時31分38秒 JST> <Info> <J2EE Deployment SPI> <BEA-260121> <アプリケーションovm_console [アーカイブ: /u01/app/oracle/ovm-manager-3/ovm_wlst/deploy/ovm_console/app/ovm_console_3.4.7.244.ear]のdeploy操作をAdminServer に初期化しています。>
..........アプリケーションのデプロイメントが完了しました(ステータスcompleted)
現在のデプロイメント・ステータス:
デプロイメント・コマンドのタイプ: deploy
デプロイメント状態: completed
デプロイメント・メッセージ: メッセージなし
<2024/06/12 13時32分08秒 JST> <Warning> <JNDI> <BEA-050001> <WLContext.close()が作成されたスレッドとは別のスレッドで呼び出されました。>
Client certificate login configuration complete
[root@ovm logs]#
これで、更新がおわったようで、Oracle VM ManagerのWeb管理画面にログインできるようになりました。