# Máquinas virtuales de Java

> Instala el certificado raíz de Proxyman CA en todos los KeyStores de Java de macOS con un solo script, para capturar el tráfico HTTPS de apps Java y Kotlin con Proxyman.

Para interceptar el tráfico HTTPS de apps Java, necesitas pasos adicionales que instalen el certificado de Proxyman CA en el Java KeyStore. Por ejemplo, para:

* Interceptar el tráfico de las pruebas unitarias (escritas en Java o Kotlin)
* Interceptar el tráfico de una app o CLI de Java

## 1. Ventajas {#1-benefit}

* Proxyman incluye un script que instala automáticamente el certificado raíz en el Java KeyStore con 1 clic ✅
* Admite `$JAVA_HOME`
* Admite `SDKMAN`
* Admite `/usr/libexec/java_home`

## 2. ¿Cómo se usa? {#2-how-to-use}

### 1. Instala Proxyman CA en tu Mac {#1-install-proxyman-ca-on-your-mac}

Antes de instalar Proxyman CA en las máquinas virtuales de Java, debes instalarlo correctamente en tu Mac.

Consulta la guía de macOS:

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

Puedes omitir este paso si ya lo has hecho.

### 2. Instala Proxyman CA en todos los Java KeyStores {#2-install-proxyman-ca-to-all-java-key-stores}

* Menú Certificate -> Install Certificate on Java VMs -> Run Script...

![Menú Certificate de Proxyman con Install Certificate on Java VMs abierto y Run Script resaltado](https://proxyman.com/docs/assets/proxyman-certificate-menu-java-run-script.jpg)

_Ejecuta el script de certificados de Java_

* El script intenta encontrar la ubicación del KeyStore a partir de **JAVA\_HOME**, **SDKMAN** o **$(/usr/libexec/java\_home)** e instala el certificado de la CA si es posible

![Salida de Terminal del script de Java de Proxyman instalando el certificado en el KeyStore cacerts de Java](https://proxyman.com/docs/assets/Screenshot%202025-02-15%20at%2014.20.51.jpg)

_Proxyman instala el certificado en todos los almacenes de confianza de Java que encuentra_

> **Nota:** Puedes encontrar el script en /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Versions/A/Resources/install-certificates-java.sh

> **Nota:** El script puede pedir el permiso de Automatización, porque Proxyman usa [AppleScript](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html) para ejecutarlo en la app Terminal con permisos de administrador.

### Solución alternativa {#alternative-solution}

* Si recibes el siguiente error, consulta la solución de @[**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`
