AIQUM のアップグレードは、トラストストア内の有効期限切れの中間 CA 証明書が原因で、証明書処理中に停止します
環境
- Active IQ Unified Manager 9.6+(AIQUM)
- すべてのOSプラットフォーム
- 任意のメジャー/マイナーバージョン間のアップグレード
問題
- AIQUM のアップグレードが「keystoresetup JEP を使用してキーストアとトラストストアを設定する」フェーズ中に無期限に停止する
- アップグレード処理が停止しているように見えます。画面には進行状況もエラーも表示されません
- CPU 使用率が高い状態が続く(Java プロセスが高速回転している)
jep.log同じ証明書エイリアスが終了処理されずに繰り返し処理されていることを示しています:- Linux/OVA:
/var/log/ocum/jep.log - Windows:
\ProgramData\NetApp\OnCommandAppData\ocum\log\jep.log
- Linux/OVA:
INFO [main] [com.netapp.jeps.keystoresetup.Main] Fetching aliases of parent certificate for certificate of alias <alias_name>- ログエントリは同じエイリアスに対して無限に繰り返され、次の証明書に進むことも完了することもありません
- アップグレードを中止して再試行しても、同じ箇所で停止します
原因
- AIQUMのアップグレードプロセスは
keystoresetup.jarを実行し、server.truststore内のすべての証明書を反復処理して証明書チェーン階層を再構築します - 内部メソッド
AliasUtils.fetchAliasesOfCertificateChain()は各証明書を検証し、そのルートCAまでチェーンをたどります - 有効期限切れの中間CA証明書が検出されると、検証は
EXPIREDステータスを返しますが、ループロジックはNO_TRUST_ANCHORでのみ中断されるため、有効期限切れの証明書に対して無期限に反復処理を続けます - これは既知の不具合(burt 1519525 / CPE-276)であり、修正されていません
- 有効期限切れの証明書は、その中間CAによって署名された証明書を持つクラスターがAIQUMに追加された際にトラストストアにインポートされた可能性が高く、その後、その中間CAの有効期限が切れたと考えられます
解決策
- アップグレード前のVMスナップショットに戻すか、ハングアップしたアップグレードプロセスを強制終了してください:
- Linux/OVA:
kill $(pgrep -f keystoresetup) - Windows: タスクマネージャーを使用して、
keystoresetupを実行しているjava.exeプロセスを終了します
- Linux/OVA:
- トラストストア内のすべての証明書を一覧表示し、有効期限切れの証明書を特定します:
Linux/OVA(AIQUM 9.14未満):keytool -list -v -keystore /opt/netapp/essentials/jboss/server/onaro/cert/server.truststore -storepass changeit | grep -A2 "Valid from"
Linux/OVA(AIQUM 9.14以降):. /opt/netapp/essentials/bin/commonfunctions.sh && set_javahome
CS=/opt/netapp/essentials/jboss/standalone/data/jbossCredStore.cs
TOKEN=$(grep 'truststore.token' /opt/netapp/essentials/conf/server.properties | sed 's/^truststore.token=//')
PASS=$(java -jar /opt/netapp/ocum/lib/jeps/credentialstore.jar -p "$CS" -a jboss -t "$TOKEN")
keytool -list -v -keystore /opt/netapp/essentials/jboss/server/onaro/cert/server.truststore -storepass "$PASS" | grep -B5 -A2 "Valid from"
Windows(AIQUM 9.14未満):keytool -list -v -keystore "C:\Program Files\NetApp\ocum\jboss\server\onaro\cert\server.truststore" -storepass changeit | findstr /C:"Valid from"
Windows(AIQUM 9.14以降):
同じcredentialstore.jarアプローチでWindowsパスを使用して、認証情報ストアからトラストストアのパスワードを抽出します:"C:\Program Files\NetApp\ocum\jboss\bin\jboss-cli.bat"または、パスの詳細についてはAIQUMの注目すべきログファイルとそれぞれの場所を参照してください - 有効期限切れの中間CA証明書(自己署名証明書ではなく、リーフ証明書でもない)を特定します — 次の条件を満たす証明書を探してください:
Valid from ... untilの終了日は過去です- この証明書は CA 証明書です(発行者が対象者と異なるか、BasicConstraints:CA:TRUE)
- エイリアスごとに期限切れの中間CA証明書を削除します:
Linux/OVA:keytool -delete -alias "<alias_name>" -keystore /opt/netapp/essentials/jboss/server/onaro/cert/server.truststore -storepass "$PASS"
Windows:keytool -delete -alias "<alias_name>" -keystore "C:\Program Files\NetApp\ocum\jboss\server\onaro\cert\server.truststore" -storepass "<password>"
注記:期限切れの中間CA証明書のみを削除し、アクティブなクラスターのルートCA証明書やリーフ証明書は削除しないでください - 削除を確認します:
Linux/OVA:keytool -list -keystore /opt/netapp/essentials/jboss/server/onaro/cert/server.truststore -storepass "$PASS" | grep -i "<alias_name>"
Windows:keytool -list -keystore "C:\Program Files\NetApp\ocum\jboss\server\onaro\cert\server.truststore" -storepass "<password>" | findstr /I "<alias_name>"
結果が返されないはずです - アップグレードを再試行します
注記:アップグレード完了後、削除された中間CAを使用していたクラスターが有効なチェーンで証明書を更新した場合、クラスターを再追加または再検出すると、新しい有効なチェーンが自動的にインポートされます。
パートナーノート
- この問題は、アップグレードプロセスを開始する前にトラストストア内の期限切れ証明書を確認することで、アップグレード前に特定できます
- プリフライトチェック:
keytool -list -v -keystore server.truststore -storepass <password> 2>/dev/null | grep -A1 "until:" | grep "until:" | while read line; do exp_date=$(echo "$line" | sed 's/.*until: //'); if [ $(date -d "$exp_date" +%s) -lt $(date +%s) ]; then echo "EXPIRED: $line"; fi; done
追加情報
- AIQUMの注目すべきログファイルとその保存場所は何ですか — 全プラットフォームのログファイルパスの完全な参照
- 破損したキーストアによりActive IQ Unified Managerのアップグレードが失敗する — アップグレードが(ハングアップではなく)「Response Code: 72」で失敗した場合
- AIQ Unified Manager:アップグレード後、すべてのクラスターで取得が失敗する — アップグレード完了後に取得が失敗した場合
- 有効期限切れの中間CA証明書は通常、エンタープライズPKIによって署名された証明書を使用するONTAPクラスターがAIQUMに追加されたときにインポートされます — 中間CAの有効期限が切れても、証明書はAIQUMトラストストアに残ります
内部情報
- 欠陥: burt 1519525 / CPE-276 (2022年、未解決)
- コード内の根本原因:
AliasUtils.fetchAliasesOfCertificateChain()(keystoresetup.jar内)- バグ1:ループ条件は
PKIXRevocationChecker.Option.NO_TRUST_ANCHORでのみ中断します—EXPIRED結果ではループが中断されないため、無限反復が発生します - バグ2:検証済み証明書を保持する
result変数は、ループの反復処理間でnullにリセットされません—前の反復処理からの古いデータが再利用され、ループが自然に終了しなくなります
- バグ1:ループ条件は
- 影響を受けるケース:
- 2010685358 (Alarm.com) — 9.16P2 → 9.18アップグレードがハングアップ、ADC-HQ-SubCA中間証明書の期限切れ
- 2010601779 (MSCI) — 同じ欠陥だが、顧客が異なる
- ハングはCPUコアを100%占有し続ける可能性があり、唯一の解決策はプロセスを強制終了することである。
- JEP.logには「エイリアスXの証明書の親証明書のエイリアスを取得中」という行が1つだけ繰り返し表示されます。これは、正当な低速処理ではなく、無限ループが発生していることを示す指標です。
- これは、関連するナレッジベース記事にある「応答コード:72」エラーとは異なります。後者のエラーは、keystoresetup が破損したキーストアファイルを検出し、エラーで終了した場合に発生します。無限ループのシナリオは終了せず、エラーコードも生成しません。