En esta página
Configuración SSL/TLS
Generación de certificados
JustC2 incluye un script para generar certificados autofirmados rápidamente:
cd dist/
bash ssl_gen.shEl script ejecuta:
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout server.rsa.key \
-out server.rsa.crt \
-days 3650Esto genera un certificado RSA de 2048 bits válido por 10 años.
Certificados ECDSA (alternativa)
Para mayor seguridad, puedes generar certificados ECDSA:
openssl req -x509 -nodes \
-newkey ec:secp384r1 \
-keyout server.ecdsa.key \
-out server.ecdsa.crt \
-days 3650Actualiza profile.yaml para usar los nuevos certificados:
Teamserver:
cert: "server.ecdsa.crt"
key: "server.ecdsa.key"Certificados personalizados
Si tienes tu propio certificado (por ejemplo, de Let’s Encrypt), simplemente apunta a los archivos:
Teamserver:
cert: "/ruta/al/fullchain.pem"
key: "/ruta/al/privkey.pem"Configuración TLS en profile.yaml
La sección tls dentro de HttpServer controla los parámetros del protocolo TLS:
HttpServer:
tls:
min_version: "TLS1.2"
max_version: "TLS1.3"
prefer_server_cipher_suites: false
cipher_suites:
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
- "TLS_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_RSA_WITH_AES_256_GCM_SHA384"Parámetros TLS
| Campo | Descripción | Valores |
|---|---|---|
min_version | Versión mínima de TLS aceptada | "TLS1.0", "TLS1.1", "TLS1.2", "TLS1.3" |
max_version | Versión máxima de TLS | "TLS1.2", "TLS1.3" |
prefer_server_cipher_suites | Priorizar las cipher suites del servidor sobre las del cliente | true, false |
cipher_suites | Lista de cipher suites permitidas | Ver tabla abajo |
Cipher suites soportadas
| Cipher Suite | Tipo | Recomendado |
|---|---|---|
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ECDHE + RSA | Sí |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE + RSA | Sí |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ECDHE + ECDSA | Sí |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ECDHE + ECDSA | Sí |
TLS_RSA_WITH_AES_128_GCM_SHA256 | RSA | Aceptable |
TLS_RSA_WITH_AES_256_GCM_SHA384 | RSA | Aceptable |
Configuración recomendada
Usa min_version: "TLS1.2" y max_version: "TLS1.3" con las cipher suites ECDHE para máxima seguridad. TLS 1.3 negocia automáticamente las cipher suites más seguras.
Perfiles de seguridad
Perfil estricto (máxima seguridad)
HttpServer:
tls:
min_version: "TLS1.3"
max_version: "TLS1.3"TLS 1.3 solo permite cipher suites seguras por diseño, por lo que no es necesario configurar cipher_suites.
Perfil compatible (mayor compatibilidad)
HttpServer:
tls:
min_version: "TLS1.2"
max_version: "TLS1.3"
prefer_server_cipher_suites: true
cipher_suites:
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"Perfil OPSEC (mimetización)
Para que el servidor TLS se parezca a un servidor web legítimo, usa las mismas cipher suites que usa nginx o Apache por defecto:
HttpServer:
error:
headers:
Server: "nginx/1.26.2"
tls:
min_version: "TLS1.2"
max_version: "TLS1.3"
cipher_suites:
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_RSA_WITH_AES_256_GCM_SHA384"Verificación
Después de iniciar el servidor, verifica la configuración TLS:
# Verificar certificado y cipher suites
openssl s_client -connect localhost:4321 -tls1_2
# Verificar TLS 1.3
openssl s_client -connect localhost:4321 -tls1_3
# Ver detalles del certificado
openssl s_client -connect localhost:4321 2>/dev/null | openssl x509 -text -noout