# Java VM

> 스크립트 하나로 macOS의 모든 Java 키스토어(KeyStore)에 Proxyman Root CA 인증서를 설치하여, Proxyman이 Java 및 Kotlin 앱의 HTTPS 트래픽을 캡처할 수 있도록 합니다.

Java 앱의 HTTPS 트래픽을 가로채려면 Proxyman CA 인증서를 Java KeyStore에 설치하는 추가 단계가 필요합니다. 예를 들어 다음과 같은 작업에 필요합니다:

* 단위 테스트(Java 또는 Kotlin으로 작성)의 트래픽 가로채기
* Java 앱 또는 CLI의 트래픽 가로채기

## 1. 장점 {#1-benefit}

* Proxyman은 루트 인증서를 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/ko/debug-devices/macos)

이미 완료했다면 이 단계는 건너뛰어도 됩니다.

### 2. 모든 Java 키스토어에 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 스크립트의 터미널 출력](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`
