eMudhra 中間CA漏えいの Windows 対応を終えた日:使っていない Oracle JDK を実測で確かめて削除した
eMudhra 中間CA漏えいの Windows 対応を終えた日
前日、漏えいした中間CA証明書(eMudhra)のテスト用サイトに、Windows の Python、Java、git がまだつながった。 経緯は前日の記事に書いた。 git と Python の requests はその日のうちに直り、Java と Python の標準ライブラリが残った。
Oracle JDK を消せば、Java の穴はふさがる。 問題は、この PC で Java を何かに使っているかどうかだった。
Java を使っているかを実測で調べた
引き継ぎプロンプト(emudhra-handoff-prompt.txt)を、Claude Code の新しいセッションに渡した。
返ってきた最初の一言は「使っているかを実測で調べます」だった。
リポジトリと過去のセッションログの全文検索を、バックグラウンドで走らせてもらった。
終わるまで数分かかる見込みで、その時点までの実測では Java を使った形跡はなかった。
待っている間に、思いついた心当たりを聞いた。 ゲームのマインクラフトで使うのではないか。 Android Studio は、Android のスマホアプリを開発するときに使うのではないか。
Minecraft については、こういう答えだった。
- Java 版は、ランチャーが専用の Java を自分で持っている。PC に入れた JDK は使わない
- 統合版(Bedrock)は、そもそも Java を使わない
- この PC には Minecraft が入っていない(ランチャーもストア版も
.minecraftフォルダもない)
Android Studio の側も、記録に根拠が残っている。
Java を要するアプリ(IDE、Android Studio、Gradle、Maven)は入っておらず、~/.gradle も ~/.m2 もない。
~/.android には adb の鍵があったが、adb は Java を使わない。
全文検索の結果も、同じ方向を指していた。 リポジトリで引っかかったのは、Python の仮想環境に入っているライブラリのファイル(httpx、debugpy、Google API の定義 JSON)だけだった。 自分のスクリプトで java を呼んでいる箇所はなかった。 過去のセッションで java を実行したのは、今回の調査だけだった。
「必要なときに入れ直せばいい」と決めた
ここで削除を決めた。 消すのは Java 全般ではなく、Oracle の JDK である。 動かなくなったら、そのときに入れ直せばいい。 入れ直せば、その時点の新しい版が入る。 この理解で合っているかを確かめてから、削除を頼んだ。
記録によれば、winget upgrade での更新は、ダウンロード先が 404 を返して通らなかった。
削除のほうも、一度では通らなかった。
winget uninstall → 1603(権限不足)で失敗
管理者権限で msiexec /x → 終了コード 0
winget での削除が権限不足で落ちたので、管理者権限の msiexec /x に切り替えてもらった。
こちらは終了コード 0 で終わった。
消えたことは、3か所で確かめてもらった。
where javaで見つからないC:\Program Files\Javaが無くなった- システムの PATH に Java の項目が残っていない
システムの JAVA_HOME も消してもらった。
存在しない jdk-16.0.2 を指したまま残っていた変数である。
これで、Oracle JDK 21.0.8 は Windows から消えた。
pip と uv を試して、Windows でやることがなくなった
「Windows であとやることは何がありますか」と聞いた。 今すぐ打てる手として残っていたのは、記録の表で「未テスト」のままだった pip と uv の確認だけだった。 口で答えるより先に、実際に試してもらった。
pip も uv も、2つのテスト用サイトへの接続を拒否した。
記録の表では pip は 26.2.2、uv は 0.13.5 で、拒否の出方はそれぞれ「証明書が失効しています」と CertDistrusted だった。
これで、Windows で今やれることは残っていない、という答えになった。 Python の標準ライブラリ(urllib)だけは、AAA 経由のテスト用サイトにまだつながる。 ただ、これは CPython 側の修正待ちで、issue #160040 で提案されている段階にある。 Windows の側で打てる手はない。
記録は eurekapu-nuxt4 の1ファイルだけにあった
何をやったかも含めて、記録を残してほしいと頼んだ。 あわせて、記録や計画書をどこに置いていたかを聞いた。 mdx-playground でしたっけ、と。
記録には「Windows は完了」と書き足してもらった。 Windows で変えた設定の一覧も、元に戻す方法つきで足してもらった。 これで、あとで不具合が出たときにどの変更を疑えばいいかがわかる。
置き場所の答えは、予想と違った。 記録は mdx-playground ではなく、eurekapu-nuxt4 の1ファイルだけにあった。 計画書は別に作っておらず、この1本にチェックリストの形で全部書いてあった。 しかも、eurekapu-nuxt4 では git の管理外だった。
これは mdx-playground に移してコミットしたほうがいい、と判断した。
移してコミットしてもらった(6f6189bc)。
コミット時の Codex レビューも、重大な指摘なしで通った。
「y」と返して push してもらうと、範囲は 3bc7861a..6f6189bc だった。
前からあった3つのコミットも一緒に出ていき、mdx-playground は origin と同じ状態になった。
Mac でも pull すれば、この記録を読める。
全体計画への書き戻し
別のセッションでは、mdx-playground の全体計画に進捗を書き戻してもらった。 「進捗更新して、計画書のドキュメントに。今ってどこまで進んでるんでしたっけ?」と頼んだ回である。
全体計画には、前日の時点で D5(旧デプロイの Access による閲覧制限)の完了が書き戻されていた(3bc7861a)。
今回はそこに、OPS-01 の ask が確認を出さない件を足してもらった。
全体計画と issue の2ファイルに記録して、コミットは c4319a52 になった。
Codex レビューの指摘はなかった。
このセッションでは push まではしなかった。
セッションを切り替えたかったので、次のセッションへのプロンプトをダウンロードフォルダにテキストファイル(mdx-handoff-2026-10-23.txt)で書き出してもらった。
push していなかった c4319a52 は、上の eMudhra の記録と一緒に 3bc7861a..6f6189bc の範囲で origin へ出ていった。
学び
- 「使っていないはず」は、リポジトリと過去のセッションログの全文検索で裏が取れる。思いついた心当たり(Minecraft、Android Studio)も、一つずつ根拠で消せた
winget uninstallが 1603 で落ちても、管理者権限のmsiexec /xで消せた。消えたかはwhere java、インストール先のフォルダ、システムの PATH の3か所で見た- git 管理外に1本だけあった記録は、mdx-playground に移して push したことで、Mac でも pull すれば読めるようになった
Oracle JDK 21.0.8 は消え、pip と uv はテスト用サイトを拒否した。
Windows で打てる手は、もう残っていない。
残っているのは CPython の修正と、Mac の画面で自分が SSL_CERT_FILE と git の http.sslCAInfo を足す2行である。