# Java VM

> macOS 上のすべての Java KeyStore に、スクリプト 1 つで Proxyman Root CA 証明書をインストールします。Java や Kotlin のアプリから HTTPS 通信をキャプチャできるようになります。

Java アプリの HTTPS 通信をインターセプトするには、Proxyman CA 証明書を Java KeyStore にインストールする追加の手順が必要です。たとえば、次のような場合に必要です：

* Java または Kotlin で書かれたユニットテストの通信をインターセプトする
* Java アプリまたは CLI の通信をインターセプトする

## 1. メリット {#1-benefit}

* Proxyman には、ワンクリックで Root Certificate を Java KeyStore に自動インストールするスクリプトが用意されています ✅
* `$JAVA_HOME` に対応
* `SDKMAN` に対応
* `/usr/libexec/java_home` に対応

## 2. 使い方 {#2-how-to-use}

### 1. Mac に Proxyman CA をインストールする {#1-install-proxyman-ca-on-your-mac}

Java VM に Proxyman CA をインストールする前に、Mac に正しくインストールしておく必要があります。

macOS ガイドをご覧ください：

- [macOS](https://proxyman.com/docs/ja/debug-devices/macos)

すでに完了している場合は、この手順を省略できます。

### 2. すべての Java KeyStore に Proxyman CA をインストールする {#2-install-proxyman-ca-to-all-java-key-stores}

* **Certificate** メニュー → **Install Certificate on Java VMs** → **Run Script...**

![Install Certificate on Java VMs が開いていて Run Script がハイライトされた Proxyman の Certificate メニュー](https://proxyman.com/docs/assets/proxyman-certificate-menu-java-run-script.jpg)

_Java 証明書のスクリプトを実行する_

* スクリプトは **JAVA\_HOME**、**SDKMAN**、または **$(/usr/libexec/java\_home)** から KeyStore の場所を探し、可能であれば CA 証明書をインストールします。

![Java の cacerts KeyStore に証明書をインストールする Proxyman の Java スクリプトの Terminal 出力](https://proxyman.com/docs/assets/Screenshot%202025-02-15%20at%2014.20.51.jpg)

_Proxyman は見つけたすべての Java トラストストアに証明書をインストールします_

> **備考:** スクリプトは /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Versions/A/Resources/install-certificates-java.sh にあります。

> **備考:** Proxyman は、管理者権限でスクリプトを Terminal アプリ上で実行するために [AppleScript](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html) を使用するため、スクリプトからオートメーションの許可を求められることがあります。

### 別の解決方法 {#alternative-solution}

* 次のエラーが表示される場合は、@[**yauheniprakapenka**](https://github.com/yauheniprakapenka) さんの解決方法をご覧ください：[https://github.com/ProxymanApp/Proxyman/issues/569#issuecomment-723588490](https://github.com/ProxymanApp/Proxyman/issues/569#issuecomment-723588490) 

`sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target`
