eMudhra 認証局の侵害について:CData Java 製品に関するお知らせ
2026年10月20日、eMudhra が運用する8つの中間認証局の秘密鍵が侵害されていたことが公表されました。CData API Server、Arc、Connect(オンプレミス版)、Sync の Java 版は Java ランタイムのトラストストアを使用しているため、対応を推奨します。
Date Entered: 10/22/2026 Last Updated: 10/22/2026
推奨される対応:侵害された eMudhra 認証局について
2026年10月20日、eMudhra が運用する8つの中間認証局の秘密鍵が侵害されていたことが公表されました。ブラウザおよび OS では、これらの認証局はすでにブロックされています。一方、CData 製品の Java 版は OS のトラストストアではなく Java ランタイムのトラストストアを使用するため、OS を更新しても保護されません。
対象製品
本お知らせは、以下の製品の Java 版をご利用のお客様を対象としています。.NET 版をご利用の場合は、本お知らせへの対応は不要です。
この問題を悪用するには、攻撃者が製品のネットワーク通信を傍受する必要があります。リスクは低いものの、以下の手順を適用することを推奨します。各製品の次のリリースにはこの修正が含まれます。当該リリースにアップグレードした場合、それ以外の対応は不要です。なお、アップグレードしても、お客様ご自身でインストールした Java 環境は変更されません。詳しくは、後述の「お客様ご自身の Java 環境、またはご自身で作成した Docker イメージで実行している場合」をご確認ください。
Arc Cloud および Sync Cloud をご利用のお客様:対応は不要です。CData がすべての Arc Cloud および Sync Cloud インスタンスの更新を進めています。
製品が使用している Java ランタイムの確認
以下の手順では、製品が実際に動作している Java ランタイムのトラストストアに修正を適用します。まず、どの Java ランタイムが使用されているかを確認してください。
- Windows のサービス、または Linux 用 tarball とともにインストールされるサービススクリプトから製品を起動している場合は、<install dir>/jre/<jdk folder> 配下の同梱ランタイムが使用されます。後述の Windows または Linux の手順に従ってください。
- java -jar arc.jar などのコマンドで製品をご自身で起動している場合は、同梱ランタイムではなく、PATH 上で最初に見つかる Java、または JAVA_HOME に設定されている Java が使用されます。この場合は、その Java 環境に修正を適用してください。詳しくは、後述の「お客様ご自身の Java 環境、またはご自身で作成した Docker イメージで実行している場合」をご確認ください。
アップグレードせずに対応する方法(回避策)
以下の手順では、製品を実行している Java ランタイムのトラストストアから、「emSign ECC Root CA - G3」と「AAA Certificate Services」の2つのルート証明書を削除します。お使いの環境によっては、このうち一方しか含まれていない場合があります。
これらの証明書のエイリアス名は、Java のディストリビューションやバージョンによって異なります。たとえば、Temurin 17 では cn_emsign_ecc_root_ca__g3,o_emudhra_technologies_limited,ou_emsign_pki,c_in [jdk]、Oracle JDK 21 では emsigneccrootcag3 [jdk] となります。そのため、手順3では、どの環境でも共通である証明書の Owner: 行で照合し、そのすぐ上の行からエイリアスを読み取ります。
Windows
- 管理者としてコマンドプロンプトを開き、同梱の Java ランタイムのディレクトリに移動します。パスとフォルダ名は、お使いの環境のものに置き換えてください(以下は CData Arc の例です)。
cd "C:\Program Files\CData\CData Arc\jre\jdk-17.0.20+8"
- トラストストアをバックアップします。
copy lib\security\cacerts lib\security\cacerts.bak
- すべてのエイリアスと、それぞれに格納されている証明書を一覧表示します。
bin\keytool -list -v -keystore lib\security\cacerts -storepass changeit | findstr /i /c:"Alias name:" /c:"Owner:"
出力は、エントリごとに2行1組で表示されます。以下の2つの Owner: 行を探してください。Owner: CN=emSign ECC Root CA - G3, O=eMudhra Technologies Limited, OU=emSign PKI, C=IN Owner: CN=AAA Certificate Services, O=Comodo CA Limited, L=Salford, ST=Greater Manchester, C=GB
見つかった各行について、そのすぐ上の Alias name: 行に記載されているエイリアスが削除対象です。ほかの emSign エントリは削除しないでください。影響を受けるのは「emSign ECC Root CA - G3」のみです。「emSign Root CA - C1」「emSign Root CA - C3」「emSign Root CA - G1」は影響を受けないため、削除せずに残してください。
- 手順3で特定した各エイリアスについて、エントリを削除します。Alias name: 以降の文字列を [jdk] サフィックスも含めてすべてコピーし、コマンド内の引用符は残したまま指定してください。
bin\keytool -delete -keystore lib\security\cacerts -storepass changeit -alias "<alias from step 3>"
- 手順3のコマンドを再度実行し、2つの Owner: 行がいずれも表示されないことを確認してください。
- 製品のサービスを再起動します。
Linux
- 製品のインストールディレクトリ内にある、同梱の Java ランタイムのディレクトリに移動します。
cd <install dir>/jre/<jdk folder>
- トラストストアをバックアップします。
cp lib/security/cacerts lib/security/cacerts.bak
- 影響を受けるエントリと、それらを格納しているエイリアスを検索します。
bin/keytool -list -v -keystore lib/security/cacerts -storepass changeit \ | grep -E "^Alias name:|^Owner:" \ | grep -B1 -iE "CN=emSign ECC Root CA - G3|CN=AAA Certificate Services"
一致したエントリごとに、Alias name: 行とそれに続く Owner: 行が出力されます。ここに表示されたエイリアスのみを削除してください。ほかの emSign エントリは削除しないでください。影響を受けるのは「emSign ECC Root CA - G3」のみです。「emSign Root CA - C1」「emSign Root CA - C3」「emSign Root CA - G1」は影響を受けないため、削除せずに残してください。
- 表示された各エイリアスについて、エイリアスを引用符で囲んで指定し、エントリを削除します。
bin/keytool -delete -keystore lib/security/cacerts -storepass changeit -alias "<alias from step 3>"
- 手順3のコマンドを再度実行し、何も出力されないことを確認してください。
- 製品のサービスを再起動します。
お客様ご自身の Java 環境、またはご自身で作成した Docker イメージで実行している場合
製品をサービス経由ではなく、java -jar arc.jar などのコマンドで起動している場合も、このセクションが該当します。この場合は、同梱ランタイムではなくお客様ご自身の Java が使用されるためです。製品をアップグレードしてもお客様の Java 環境のトラストストアは変更されないため、アップグレード後もこれらの手順が必要です。
その Java 環境の lib/security/cacerts に対して、上記と同じ手順を適用してください。その後、製品を再起動するか、イメージを再ビルドしてください。
別の方法として、そのトラストストアは変更せずに、Java のコマンドラインに以下を追加して、修正済みの cacerts のコピーを製品が参照するように指定することもできます。
-Djavax.net.ssl.trustStore=<path to patched cacerts> -Djavax.net.ssl.trustStorePassword=changeit
フィンガープリントによる確認
削除する前にエントリを確認したい場合は、SHA-256 フィンガープリントを確認してください。
keytool -list -v -keystore <cacerts> -storepass changeit -alias "<alias from step 3>"
| 証明書 | SHA-256 フィンガープリント |
|---|---|
| emSign ECC Root CA - G3 | 86:A1:EC:BA:08:9C:4A:8D:3B:BE:27:34:C6:12:BA:34:1D:81:3E:04:3C:F9:E8:A8:62:CD:5C:57:A3:6B:BE:6B |
| AAA Certificate Services | D7:A7:A0:FB:5D:7E:27:31:D7:71:E9:48:4E:BC:DE:F7:1D:5F:0C:3E:0A:29:48:78:2B:C8:3E:E0:EA:69:9E:F4 |
手順3で何も出力されない場合、その Java ランタイムは影響を受けるルート証明書を信頼していないため、変更は不要です。新しいバージョンの Java では、keytool が "Warning: use -cacerts option to access cacerts keystore" という警告を出力する場合がありますが、この警告は無視してかまいません。
「AAA Certificate Services」を削除しても、ほかの Sectigo または Comodo の証明書チェーンを使用しているサイトへの接続には影響しません。これらのチェーンは、トラストストアに残っている別のルート証明書につながっているためです。
ご不明な点がございましたら、CData サポートまでお問い合わせください。
フィードバックをお待ちしております。このページに関するご質問・ご意見・ご要望がございましたら、サポートチームまでお問い合わせください:[email protected]