Configurar HTTPS en Tomcat con certificado autofirmado
🔐 Configurar HTTPS en Tomcat con certificado autofirmado (entorno de desarrollo)
Para entornos de desarrollo o servidores internos, podés usar un certificado autofirmado para habilitar HTTPS en Apache Tomcat 10.1. Esto permite probar aplicaciones que requieren HTTPS (como GeneXus) sin necesidad de un certificado emitido por una autoridad externa.
1️⃣ Crear certificado autofirmado (.p12)
Ejecutá el siguiente script .bat con permisos de administrador. Guardalo como crear_certificado_tomcat.bat:
@echo off
mkdir "C:\cert"
"C:\Program Files\Java\jdk-21\bin\keytool.exe" -genkeypair ^
-alias tomcat ^
-keyalg RSA ^
-keysize 2048 ^
-validity 3650 ^
-keystore "C:\cert\tomcat-keystore.p12" ^
-storetype PKCS12 ^
-storepass changeit ^
-dname "CN=localhost, OU=Desarrollo, O=MiEmpresa, L=Rio Cuarto, ST=Cordoba, C=AR"
🔹 También podés ejecutar el mismo comando en una sola línea (por ejemplo desde PowerShell):
"C:\Program Files\Java\jdk-21\bin\keytool.exe" -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -validity 3650 -keystore "C:\cert\tomcat-keystore.p12" -storetype PKCS12 -storepass changeit -dname "CN=localhost, OU=Desarrollo, O=MiEmpresa, L=Rio Cuarto, ST=Cordoba, C=AR"
Esto generará el archivo tomcat-keystore.p12 en C:\cert, válido por 10 años.
2️⃣ Configurar Tomcat
Editá el archivo server.xml ubicado en C:\Program Files\Apache Software Foundation\Tomcat 10.1\conf\ y agregá el siguiente conector HTTPS:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS">
<SSLHostConfig>
<Certificate certificateKeystoreFile="C:\cert\tomcat-keystore.p12"
type="PKCS12"
certificateKeystorePassword="changeit" />
</SSLHostConfig>
</Connector>
Luego reiniciá el servicio Tomcat. Podés acceder a tu app en https://localhost:8443. El navegador mostrará una advertencia por ser autofirmado, pero es normal para uso interno.
⚙️ ¿Qué hacer si aparece "keytool no se reconoce como un comando"?
Este error significa que Windows no encuentra el ejecutable keytool.exe. Para solucionarlo, agregalo al PATH del sistema:
- Presioná Win + R, escribí
sysdm.cply presioná Enter. - En la pestaña Opciones avanzadas, hacé clic en Variables de entorno.
- En "Variables del sistema", seleccioná
Pathy hacé clic en Editar. - Hacé clic en Nuevo y agregá la ruta a tu JDK, por ejemplo:
C:\Program Files\Java\jdk-21\bin - Aceptá todo y cerrá las ventanas.
- Cerrá y volvé a abrir cualquier consola que tengas abierta.
- Probá con:
para verificar que ya funciona.keytool -help
❌ ¿Qué hacer si aparece "Incorrect AVA format"?
Este error indica que hay un error de formato en la propiedad -dname. Para evitarlo:
- No uses tildes ni caracteres especiales (por ejemplo: ó, á, ñ).
- No dejes espacios antes o después de las comas.
- Usá este formato exacto como ejemplo válido:
-dname "CN=localhost, OU=Desarrollo, O=MiEmpresa, L=Rio Cuarto, ST=Cordoba, C=AR"
🔁 Notas finales
- Este método es ideal para pruebas locales o entornos cerrados.
- No usar certificados autofirmados en producción.
- Recordá que GeneXus necesita tener configurado Protocol specification = Secure (HTTPS:) para generar las URLs correctamente.