Certificados y Client SSL
Resumen
Para publicar una aplicación HTTPS, BIG-IP presenta el certificado al cliente y descifra el tráfico con un perfil Client SSL (SSL offloading). Si además debe cifrar hacia los servidores, se agrega un perfil Server SSL (re-encryption). Esta nota genera la llave y el CSR, importa el certificado y la cadena intermedia, crea el perfil, lo asigna al VS, lo renueva sin corte y endurece las versiones TLS.
Requisitos previos
- Nombre del sitio (CN) y nombres alternativos (SAN)
- Acceso a la CA de la empresa o a una CA pública
- Certificado intermedio (chain) de la CA
- El virtual server del puerto 443 (Virtual Servers)
Conceptos clave
| Concepto | Qué es |
|---|---|
| SSL Profile (Client) | Lado clientes: BIG-IP presenta el certificado y descifra |
| SSL Profile (Server) | Lado servidores: BIG-IP cifra de nuevo hacia el pool |
| Certificate Key Chain | Certificado + llave + cadena + passphrase dentro del perfil |
| CSR | Solicitud de firma que se envía a la CA |
| Chain / Bundle | Certificados intermedios; si falta, algunos clientes no confían |
| SNI | Varios perfiles Client SSL en un VS, uno por nombre de sitio |
| clientssl-secure / serverssl-secure | Perfiles padre más seguros incluidos |
| Max Aggregate Renegotiation | Limita renegociaciones (mitiga DoS por renegociación) |
Llaves privadas
La llave privada nunca sale del BIG-IP sin cifrar. Si se expone, revoca y renueva el certificado.
Configuración (Ejemplo, Lab CBT Nuggets)
1. Generar llave y CSR
System > Certificate Management > Traffic Certificate Management > SSL Certificate List > Create > Name: www.f5lab.int_2027 > Issuer: Certificate Authority > Common Name, Organization, Country (código ISO de 2 letras), Subject Alternative Name (DNS:www.f5lab.int) > Key Size 2048 > Finished. Copia el CSR y envíalo a la CA.
tmsh create sys crypto key www.f5lab.int_2027 key-size 2048 gen-csr common-name www.f5lab.int country <PAIS> organization "<EMPRESA>" subject-alternative-name "DNS:www.f5lab.int"
tmsh list sys crypto csr www.f5lab.int_2027
En un lab puedes elegir Issuer: Self para un certificado autofirmado.
2. Importar el certificado firmado y la cadena
SSL Certificate List > www.f5lab.int_2027 > Import > pega o sube el certificado. Repite con Import > Type: Certificate > Name: intermedia_ca para la cadena.
tmsh install sys crypto cert www.f5lab.int_2027 from-local-file /var/tmp/www.f5lab.int.crt
tmsh install sys crypto cert intermedia_ca from-local-file /var/tmp/intermediate.crt
3. Crear el perfil Client SSL
Local Traffic > Profiles > SSL > Client > Create > Name: cssl_www, Parent: clientssl (o clientssl-secure) > Certificate Key Chain > Custom > Add: Certificate www.f5lab.int_2027, Key www.f5lab.int_2027, Chain intermedia_ca, Passphrase (si la llave tiene) > Add > Finished.
tmsh create ltm profile client-ssl cssl_www defaults-from clientssl cert-key-chain add { www { cert www.f5lab.int_2027 key www.f5lab.int_2027 chain intermedia_ca } }
4. Asignarlo al VS
Virtual Servers > el VS 443 > Configuration > SSL Profile (Client): cssl_www > Update. Para re-encryption agrega SSL Profile (Server): serverssl y usa miembros en el puerto 443.
tmsh modify ltm virtual VS-172.16.101.20-HTTPS-APP1 profiles add { cssl_www { context clientside } }
tmsh modify ltm virtual VS-172.16.101.20-HTTPS-APP1 profiles add { serverssl { context serverside } }
5. Endurecer TLS
Perfil cssl_www > Configuration: Advanced > Options: marca No TLSv1, No TLSv1.1 (No SSL ya viene) > Ciphers: cipher string fuerte > Update.
tmsh modify ltm profile client-ssl cssl_www options { no-tlsv1 no-tlsv1.1 no-ssl } ciphers 'ECDHE+AES-GCM:ECDHE+CHACHA20'
6. Renovar sin corte
- Genera e importa el certificado nuevo con otro nombre (ej.
www.f5lab.int_2028). - En
cssl_wwwreemplaza el Certificate Key Chain por el nuevo > Update. - Prueba; no borres el viejo hasta confirmar.
tmsh modify ltm profile client-ssl cssl_www cert-key-chain replace-all-with { www { cert www.f5lab.int_2028 key www.f5lab.int_2028 chain intermedia_ca } }
tmsh save sys config
Las conexiones nuevas usan el certificado nuevo; las existentes terminan normalmente.
7. Varios sitios en un VIP (SNI)
Crea un perfil Client SSL por sitio con su Server Name; marca uno como Default SSL Profile for SNI y asigna todos al mismo VS.
Verificación
| Comando o lugar | Qué debes ver | Si no lo ves |
|---|---|---|
openssl s_client -connect 172.16.101.20:443 -servername www.f5lab.int -showcerts | El certificado del sitio y el intermedio | Falta la chain en el perfil |
openssl s_client -connect 172.16.101.20:443 -tls1_1 | Handshake rechazado | Revisa Options del perfil |
curl -vk https://172.16.101.20/ | Handshake OK y respuesta HTTP | Ver Errores comunes |
tmsh run sys crypto check-cert | Certificados vencidos o por vencer | Renueva (paso 6) |
| Navegador | Candado sin advertencias (con CA de confianza) | Autofirmado o falta chain |
Errores comunes
”Certificado no confiable” solo en algunos clientes (móviles, Java)
- Causa: falta el certificado intermedio en el Key Chain.
- Solución: importa la chain y agrégala al perfil.
El navegador muestra el certificado de otro sitio
- Causa: SNI sin perfil para ese nombre, o otro perfil marcado como default.
- Solución: crea el perfil del nombre y revisa el default de SNI.
El handshake falla con clientes antiguos
- Causa: deshabilitaste TLS 1.0/1.1 o ciphers que el cliente necesita.
- Solución: evalúa el riesgo; idealmente actualiza el cliente.
Re-encryption: el pool está verde pero las páginas fallan
- Causa: miembros en el puerto 80 con perfil Server SSL, o el monitor no es HTTPS.
- Solución: miembros en 443 y monitor
https.
No se puede leer el tráfico para persistencia por cookie o iRules HTTP
- Causa: SSL pass-through (sin Client SSL).
- Solución: termina SSL en el BIG-IP.