La fijación de certificados es una técnica de seguridad en la que una aplicación fija de antemano el certificado TLS (o la clave pública) del servidor con el que se comunica y rechaza la comunicación si el certificado presentado al conectarse no coincide con el valor fijado. Se usa como medida contra los ataques de intermediario (MITM) que emplean certificados falsos emitidos por autoridades de certificación ilegítimas.
Como ejemplos de implementación en aplicaciones móviles, en iOS el hash de la clave pública del certificado se especifica en un método delegado de URLSession, y en Android, en Network Security Config. En una aplicación de URLs cortas, si se sufre un ataque MITM al obtener el destino de la redirección, existe el riesgo de que los usuarios acaben en un sitio malicioso.
En el pasado se estandarizó HTTP Public Key Pinning (HPKP) para los navegadores web, pero Google ha anunciado que eliminará HPKP en Chrome 72, alegando su escaso uso y riesgos como la denegación de servicio. Certificate Transparency (CT) es un mecanismo que registra los certificados emitidos en registros públicos para que se puedan detectar las emisiones indebidas.
Un problema operativo de la fijación de certificados es que hace falta actualizar la aplicación cuando se rotan los certificados. Configurar pines de respaldo o fijar a nivel del certificado intermedio permite atenuar el impacto de la rotación.
En los servicios de URLs cortas, también existe la opción de combinar la fijación de certificados para proteger la comunicación de la API con la supervisión de los registros de CT para detectar la emisión de certificados indebidos.