CertH certH
En esta página

Cómo conseguir una calificación SSL A+ (checklist 2026)

Actualizado 2026-11-03 · 7 min de lectura

Un A+ no es otro tipo de certificado, es otra configuración TLS. A casi todos los sitios atascados en A les falta un solo ajuste: terminan TLS 1.2 correctamente, pero nunca activaron TLS 1.3 ni enviaron una cabecera HSTS lo bastante larga.

Qué decide realmente la nota

CertH puntúa cinco áreas ponderadas a partir de un único handshake TLS puro: validez y cadena del certificado, fuerza de la clave y algoritmo de firma, versiones de protocolo ofrecidas, suites de cifrado negociadas, y HSTS más OCSP stapling. No hay acceso al servidor, ni agente, ni subida de archivos de configuración: todo se observa desde fuera, exactamente como lo vería un navegador.

Los umbrales son simples. Un A+ exige una puntuación de 95 o más, TLS 1.3 en la lista de protocolos negociados, y HSTS preloaded o con un max-age de al menos 180 días. A empieza en 90, B en 80, C en 70, D en 55, y por debajo de 55 es F. Un certificado caducado es un 0 automático.

Los cuatro cambios que te llevan de A a A+

En la práctica la diferencia casi siempre es uno de estos cuatro. Corrígelos en orden: cada uno se puede verificar de forma independiente desde fuera, así que puedes volver a escanear tras cada paso.

  • •Activar TLS 1.3. Vale puntos por sí solo y es obligatorio para A+ incluso con un 100 perfecto en todo lo demás.
  • •Subir HSTS a al menos max-age=15552000 (180 días). Un año (31536000) es la opción habitual.
  • •Servir una cadena completa, incluidos los intermedios. Un intermedio ausente aparece como error de cadena en algunos clientes y cuesta puntos.
  • •Activar OCSP stapling para que la comprobación de revocación viaje con el handshake en lugar de filtrar la IP del visitante a la CA.

Configuración de nginx que consigue A+

Un bloque server completo para un nginx moderno (1.19+ con OpenSSL 1.1.1+). Si tu nginx se compiló contra un OpenSSL más antiguo, TLS 1.3 estará silenciosamente indisponible por mucho que escribas aquí: compruébalo antes con nginx -V.

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Configuración de Apache que consigue A+

Apache necesita que la caché de stapling se declare una vez a nivel de servidor, no dentro de un host virtual. Todo lo demás va dentro del bloque <VirtualHost *:443>.

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

SSLUseStapling on
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Los errores que dejan un sitio en A

El más común: activar HSTS con includeSubDomains en un dominio que aún tiene subdominios solo HTTP. Se rompen al instante y la reacción habitual es eliminar la cabecera entera, lo que te devuelve a A. Despliega HSTS por etapas: empieza con un max-age de 300 segundos, vigila una semana y luego sube a un año.

El segundo error más común es suponer que TLS 1.3 está activo porque el certificado es moderno. Certificados y versiones de protocolo son independientes. Un certificado recién emitido en un servidor que solo habla TLS 1.2 sigue por debajo de 95.

El tercero es un CDN delante del origen. Si Cloudflare, Fastly o un balanceador terminan el TLS, la configuración del origen es irrelevante: la nota refleja el edge, así que el ajuste hay que cambiarlo allí.

Compruébalo tú mismo

Cada cambio se confirma en unos segundos desde una terminal. TLS 1.3 solo se negocia si el servidor realmente lo ofrece, HSTS aparece en las cabeceras de respuesta, y el stapling se ve en el bloque de respuesta OCSP.

# Does the server actually negotiate TLS 1.3?
openssl s_client -connect example.com:443 -tls1_3 -servername example.com </dev/null 2>/dev/null | grep "Protocol"

# Is HSTS set, and for how long?
curl -sI https://example.com | grep -i strict-transport-security

# Is OCSP stapling actually working?
openssl s_client -connect example.com:443 -status -servername example.com </dev/null 2>/dev/null | grep -A2 "OCSP Response"

FAQ

¿Un A+ requiere un certificado de pago o de validación extendida?

No. Un certificado de validación de dominio (DV) puede llegar a A+: la nota mide la configuración TLS, no el nivel de validación. El tipo de certificado solo importa cuando cambia la cadena o el algoritmo de clave.

¿Por qué bajó mi nota tras renovar el certificado?

Las renovaciones suelen traer otro emisor u otro tipo de clave, y algunos servidores vuelven a otro conjunto de cifrados tras recargar. CertH registra el cambio en la sección de análisis de evolución de la puntuación del informe del dominio, con el motivo concreto.

¿Necesito HSTS preload para llegar a A+?

No. Preload es solo una de las dos formas de cumplir el requisito HSTS; un max-age de al menos 180 días sin preload es suficiente. Preload es más estricto y mucho más difícil de revertir, trátalo como opcional.

Sigue leyendo