logo
GeekFormat

Generador de Security.txt

Generador de security.txt

Salida según RFC 9116, lista para implementar en /.well-known/security.txt.

Información de divulgación

Declare la URL Canonical de su security.txt para evitar la suplantación en otras rutas

Salida generada

Genera en línea archivos security.txt que cumplen con el estándar RFC 9116, proporcionando a los investigadores de seguridad un canal formal para reportar vulnerabilidades. Vista previa en tiempo real, copiar con un clic, implementa directamente en /.well-known/security.txt para que surta efecto.

Relacionado

Casos de uso

  • Sitios web corporativos, plataformas SaaS, tiendas en línea establecen canales formales de reporte de vulnerabilidades, configurando correo de Contact y página de política de seguridad Policy
  • Publica la URL de la clave pública de cifrado PGP para que los investigadores de seguridad puedan cifrar y enviar detalles de vulnerabilidades sensibles, evitando que la información de vulnerabilidades sea interceptada en texto plano
  • Configura la URL de la página de salón de la fama de seguridad Acknowledgments para agradecer públicamente a los investigadores que reportan vulnerabilidades, mejorando la confianza de la comunidad de seguridad
  • Configura el enlace de contratación de seguridad Hiring para mostrar activamente información de reclutamiento del equipo a investigadores de seguridad y hackers sombrero blanco, atrayendo talento en seguridad
  • Establece la marca de tiempo de expiración Expires para recordar al equipo revisar y actualizar periódicamente la información de contacto de seguridad, evitando que la información caduque y las vulnerabilidades no puedan ser reportadas
  • Configura el campo Canonical para declarar la URL canónica del archivo security.txt, evitando que atacantes falsifiquen contenido malicioso de security.txt para engañar a investigadores
  • Sitios web con altos requisitos de cumplimiento como gubernamentales, financieros y médicos cumplen con los requisitos de construcción de Políticas de Divulgación de Vulnerabilidades (VDP), siguiendo las mejores prácticas de supervisión de la industria
  • Proyectos de código abierto, blogs personales y servicios API configuran rápidamente canales de contacto de seguridad, demostrando una actitud de importancia hacia los problemas de seguridad

Características

  • Cumple estrictamente con el último estándar RFC 9116: el formato de salida cumple totalmente con la especificación y se puede usar directamente en entornos de producción
  • Soporte para múltiples contactos: uno por línea, se pueden declarar independientemente correos (mailto:), URLs (https://) y teléfonos (tel:)
  • Cobertura completa de campos: campos obligatorios Contact y Expires + todos los campos opcionales Encryption, Acknowledgments, Policy, Hiring, Canonical, Preferred-Languages
  • Vista previa en tiempo real: el contenido de security.txt se actualiza instantáneamente al modificar cualquier configuración, lo que ves es lo que obtienes, sin necesidad de hacer clic en botón de generar
  • Declaración automática de idioma: adjunta automáticamente el campo Preferred-Languages según el idioma de la página actual, facilitando el reporte de investigadores de seguridad internacionales
  • Formato de tiempo ISO 8601: el campo Expires usa formato de tiempo UTC estándar, cumpliendo con la última especificación RFC
  • Validación de formato de campos: verifica automáticamente los prefijos de Contact (mailto:/https:/tel:) y el formato de tiempo de Expires, evitando salidas no válidas
  • Copiar con un clic: haz clic para copiar el contenido completo al portapapeles y pégalo para implementar
  • Plantillas de ejemplo integradas: se completa con formato de ejemplo por defecto, puedes reemplazar rápidamente con tu propia información sin empezar desde cero
  • Ejecución local puramente en frontend: la información de configuración se procesa localmente en el navegador y no se sube a ningún servidor
  • Sugerencia de ruta de implementación: después de generar, se indica la ruta de implementación estándar /.well-known/security.txt y los puntos clave de configuración del servidor
  • Gratis sin marcas de agua: el archivo generado no tiene marcas de agua ni restricciones, se puede usar directamente en sitios web comerciales

Cómo Usar

  1. En el área de Contact, completa el correo o URL de contacto de seguridad (uno por línea, admite múltiples líneas; los correos deben tener el prefijo mailto:, las URLs el prefijo https://)
  2. Configura según sea necesario los campos opcionales Encryption (URL de clave pública PGP), Acknowledgments (página de salón de la fama de agradecimientos), Policy (página de política de divulgación de vulnerabilidades), Hiring (página de contratación de seguridad), Canonical (URL canónica del archivo), etc.
  3. Establece el tiempo de expiración Expires (tiempo UTC en formato ISO 8601, por ejemplo 2027-12-31T23:59:59Z, se recomienda establecerlo entre 6 y 12 meses después)
  4. Previsualiza el contenido generado en tiempo real a la derecha, confirma que el formato es correcto y haz clic en el botón de copiar
  5. Crea una carpeta .well-known en el directorio raíz del sitio web, guarda el contenido como security.txt y colócalo dentro
  6. Configura el servidor web (Nginx/Apache/Caddy, etc.) para asegurar que se pueda acceder a través de https://tudominio/.well-known/security.txt con Content-Type text/plain

Preguntas Frecuentes

¿Qué es el archivo security.txt? ¿Por qué mi sitio web lo necesita?

security.txt es un estándar de seguridad web definido por el IETF en el RFC 9116, cuyo propósito es proporcionar a los sitios web una forma estandarizada de publicar información de contacto de seguridad. Cuando los investigadores de seguridad (hackers sombrero blanco) encuentran una vulnerabilidad de seguridad en tu sitio web, necesitan saber a quién contactar, cómo enviar informes cifrados y qué política de divulgación seguir. Si no hay security.txt, los investigadores pueden no encontrar a la persona correcta y las vulnerabilidades pueden ser divulgadas públicamente o incluso explotadas maliciosamente. Google, GitHub, Facebook/Meta, el gobierno del Reino Unido, CISA de EE. UU. y los gobiernos de Francia/Italia/Países Bajos/Australia ya han adoptado este estándar.

¿En qué ruta del sitio web debe colocarse security.txt?

Según el estándar RFC 9116, security.txt debe colocarse en la ruta /.well-known/security.txt (es decir, en la carpeta .well-known del directorio raíz del sitio web). También se puede colocar una copia de /security.txt en el directorio raíz como compatibilidad alternativa. Debe ser accesible a través de HTTPS y el Content-Type debe ser text/plain. No se puede colocar en otras rutas, de lo contrario las herramientas de escaneo de seguridad automatizadas no podrán reconocerlo.

¿Qué formatos de contacto admite el campo Contact? ¿Se pueden completar varios?

Admite tres formatos: las direcciones de correo deben usar el prefijo mailto: (por ejemplo mailto:security@example.com), las URLs web deben usar el prefijo https:// (por ejemplo https://example.com/security-report), los números de teléfono deben usar el prefijo tel: (por ejemplo tel:+1-201-555-0123). Se pueden completar múltiples contactos, uno por línea, y los investigadores de seguridad pueden elegir el canal más conveniente para contactarte. Se recomienda proporcionar al menos un correo y un enlace a formulario web.

¿El campo Expires es obligatorio? ¿Qué requisitos de formato tiene?

Expires es un campo obligatorio (Contact también es obligatorio, los demás son opcionales). Expires indica el tiempo de vencimiento del contenido de security.txt y debe usar tiempo UTC en formato ISO 8601, por ejemplo 2027-12-31T23:59:59Z (la Z indica zona horaria UTC). Se recomienda establecer el vencimiento entre 6 y 12 meses después de la creación para recordarte actualizar periódicamente la información de contacto de seguridad. Después de la expiración, las herramientas automatizadas considerarán que la información del archivo puede no ser válida.

¿Por qué se necesita el campo Encryption? ¿Es obligatorio colocar la clave pública PGP?

El campo Encryption se usa para señalar la ubicación de tu clave pública PGP. Los investigadores de seguridad pueden usar esta clave para cifrar los informes de vulnerabilidades antes de enviarlos, evitando que los detalles de vulnerabilidades sean interceptados y filtrados durante la transmisión del correo. No es un campo obligatorio, pero se recomienda encarecidamente configurarlo, porque la información de vulnerabilidades es muy sensible y los correos en texto plano pueden ser espiados por ISP, administradores de servidores de correo o atacantes. Puedes colocar la clave pública PGP en /.well-known/pgp-key.txt y luego completar esta URL en el campo Encryption.

¿Para qué sirve el campo Acknowledgments? ¿Por qué establecer una página de agradecimientos?

El campo Acknowledgments apunta a una página de agradecimientos pública (también llamada Salón de la Fama de Seguridad/Hall of Fame), que lista los nombres o IDs de investigadores que alguna vez te reportaron vulnerabilidades de seguridad. Es un reconocimiento público al trabajo de los investigadores de seguridad y también una forma efectiva de atraer a más investigadores sombrero blanco para que te ayuden a encontrar vulnerabilidades. Muchos investigadores de seguridad eligen probar prioritariamente sitios web con mecanismos de agradecimiento público, porque eso significa que sus contribuciones serán reconocidas.

¿A qué contenido debe enlazar el campo Policy?

El campo Policy debe enlazar a tu página de Política de Divulgación de Vulnerabilidades (Vulnerability Disclosure Policy, VDP). Esta página debe explicar claramente: qué comportamientos de prueba están permitidos (cuáles están prohibidos, por ejemplo no se permite DDoS, no se permite acceder a datos de usuarios), compromiso de tiempo de respuesta para reportes de vulnerabilidades, si ofrecerás recompensas por vulnerabilidades, tu compromiso legal con la investigación de seguridad legítima (como no demandar a investigadores de buena fe), etc. Una Policy clara brinda seguridad legal a los investigadores de seguridad para que se sientan cómodos reportándote problemas.

¿Para qué sirve el campo Canonical? ¿Es necesario completarlo?

El campo Canonical se usa para declarar la URL canónica del propio archivo security.txt. Un sitio web puede tener acceso a security.txt en múltiples dominios o rutas (por ejemplo example.com y www.example.com), y el campo Canonical indica a los investigadores qué URL es la versión oficial y confiable. Esto evita que atacantes coloquen un security.txt falso en alguna ruta para engañar a investigadores y que envíen informes de vulnerabilidades a los atacantes. Se recomienda completar la URL de tu dominio formal, como https://example.com/.well-known/security.txt.

¿Qué significa el campo Preferred-Languages?

Preferred-Languages indica a los investigadores de seguridad qué idiomas puede manejar tu equipo de seguridad para los informes, expresado con códigos de idioma separados por comas (por ejemplo en, es, ja). Este generador establecerá automáticamente este campo según el idioma de la página que estés usando actualmente. Esto es importante porque la investigación de seguridad es global, los investigadores pueden estar en cualquier país, e indicar de antemano los idiomas que admites evita fallos de comunicación por barreras idiomáticas.

¿El campo Hiring también debe colocarse en security.txt?

Sí, Hiring es uno de los campos opcionales definidos por el estándar RFC 9116. Este campo apunta a la página de contratación de tu equipo de seguridad. Los propios investigadores de seguridad son excelentes candidatos a talentos en seguridad: el hecho de que puedan encontrar vulnerabilidades en tu sitio web demuestra que tienen fuertes capacidades de seguridad, y colocar enlaces de contratación en security.txt es una forma muy precisa de reclutar talento en seguridad. Muchas empresas conocidas (incluyendo Google) colocan enlaces de contratación en security.txt.

¿Si pongo un correo de contacto de seguridad recibiré mucho correo no deseado?

Esta es la preocupación más común por parte de los propietarios de sitios web. Hay varias soluciones para reducir el correo no deseado: primero, no coloques directamente la dirección de correo, sino la URL de un formulario web de reporte de seguridad (prefijo https://), lo que permite agregar CAPTCHA para filtrar bots; segundo, usa un alias de correo de seguridad dedicado (como security@) y configura un buen filtro de correo no deseado; tercero, proporciona cifrado con clave pública PGP, los remitentes de correo no deseado automatizados no usan cifrado PGP; cuarto, indica claramente en la Policy que solo aceptas informes relacionados con vulnerabilidades de seguridad. De hecho, la mayoría de los sitios que han implementado security.txt informan que el aumento de correo no deseado no es significativo, pero los reportes de vulnerabilidades aumentan notablemente.

¿security.txt necesita firma digital? ¿Cómo se hace?

El RFC 9116 recomienda (pero no obliga) usar firmas de texto plano OpenPGP (cleartext signature) para firmar digitalmente security.txt, de modo que los investigadores puedan verificar que el archivo fue publicado oficialmente por el sitio web y no ha sido alterado por atacantes. El método es usar la herramienta GPG para hacer clearsign al archivo: gpg --clearsign -o security.txt.sig security.txt, y luego usar el contenido firmado (que comienza con -----BEGIN PGP SIGNED MESSAGE-----) como contenido final de security.txt. Sin embargo, esta es una operación avanzada, la mayoría de los sitios web pueden usarlo normalmente sin hacer la firma.

¿Cómo debo configurar security.txt en Nginx/Apache/Caddy?

Requisitos de configuración principales: asegúrate de que la ruta /.well-known/security.txt sea accesible, el Content-Type devuelva text/plain, debe usar HTTPS, no hagas redireccionamientos a esta ruta (especialmente no redirecciones a otros dominios). Nginx puede usar coincidencia exacta con location: location = /.well-known/security.txt { default_type text/plain; alias /path/to/security.txt; }; Apache asegúrate de que .htaccess no bloquee el acceso al directorio .well-known; Caddy usa handle_path para especificarlo directamente.

Mi sitio web es muy pequeño (blog personal/proyecto de código abierto), ¿también necesito poner security.txt?

Es muy recomendable ponerlo. Independientemente del tamaño del sitio web, mientras tenga datos de usuarios o brinde servicios en Internet, puede tener vulnerabilidades de seguridad. El costo de implementación de security.txt es extremadamente bajo: generarlo con esta herramienta solo toma 2 minutos, solo necesitas colocar un archivo. Grandes empresas como Google y GitHub lo usan, y los desarrolladores individuales y proyectos de código abierto también pueden usarlo. Es una práctica de seguridad con una relación calidad-precio extremadamente alta: casi costo cero, pero permite que los investigadores de buena fe que encuentran vulnerabilidades tengan un canal para informarte los problemas, en lugar de irse en silencio o divulgarlos públicamente.

¿Cuál es la diferencia entre security.txt y robots.txt?

Ambos son archivos de texto estándar colocados en /.well-known/ (o directorio raíz), pero sus usos son completamente diferentes: robots.txt es para los rastreadores de motores de búsqueda, indicándoles qué rutas no deben rastrear; security.txt es para investigadores de seguridad, indicándoles cómo contactarte después de encontrar vulnerabilidades. Uno se orienta a motores de búsqueda, el otro a investigadores de seguridad, ambos se complementan y no entran en conflicto, se pueden implementar simultáneamente.

Sobre security.txt: Guía completa del estándar de divulgación de seguridad web

security.txt es una mejor práctica de seguridad web formalmente estandarizada por el IETF (Internet Engineering Task Force) en el RFC 9116, cuyo objetivo es proporcionar a los sitios web una forma unificada y estándar de publicar información de contacto de seguridad. En pocas palabras, es un archivo de texto colocado en una ruta fija del sitio web que les dice a los investigadores de seguridad (hackers sombrero blanco): "Si encuentras una vulnerabilidad de seguridad en mi sitio web, aquí está la forma de contactarnos, esta es nuestra clave pública de cifrado, esta es nuestra política de divulgación, agradecemos tu informe."

Antes de que apareciera el estándar security.txt, la información de contacto de seguridad de los sitios web era caótica. Algunos sitios web no tenían ningún contacto de seguridad en absoluto, algunos lo ocultaban en una página en algún rincón, algunos solo dejaban un correo info@ que nadie revisaba, y algunos requerían esfuerzos en LinkedIn para encontrar al equipo de seguridad. Esto causaba un problema grave: cuando los investigadores de seguridad de buena fe encontraban vulnerabilidades, a menudo no encontraban el canal correcto para reportarlas. El resultado era que muchas vulnerabilidades quedaban en el olvido, sin ser corregidas, hasta que hackers maliciosos las encontraban y explotaban. security.txt nació precisamente para resolver este problema de la "última milla".

El concepto de security.txt fue propuesto originalmente por los investigadores de seguridad EdOverflow y Yakov Shafranovich en 2017, y obtuvo rápidamente un amplio apoyo de la industria. En abril de 2022, security.txt fue aprobado formalmente por el IETF como estándar RFC 9116, convirtiéndose en un estándar de seguridad web reconocido internacionalmente. Hoy en día, grandes empresas tecnológicas como Google, GitHub, Meta (Facebook), LinkedIn, Cloudflare, así como agencias gubernamentales como el gobierno del Reino Unido, CISA de EE. UU. (Agencia de Ciberseguridad y Seguridad de Infraestructuras), el gobierno de Francia, el gobierno de Italia, el gobierno de los Países Bajos y el Centro de Ciberseguridad de Australia ya han implementado security.txt en sus sitios web oficiales y recomiendan públicamente su adopción por otras organizaciones.

El diseño central del archivo security.txt es muy simple: es un archivo de texto plano compuesto por una serie de líneas de "nombre_campo: valor", similar al formato de encabezados HTTP. El estándar define dos campos obligatorios: Contact (contacto de seguridad, puede haber varios) y Expires (tiempo de vencimiento del archivo); así como varios campos opcionales: Encryption (URL de clave pública de cifrado PGP), Acknowledgments (URL de página de agradecimientos), Policy (URL de política de divulgación de vulnerabilidades), Hiring (URL de contratación de seguridad), Canonical (URL canónica del archivo), Preferred-Languages (idiomas admitidos para informes), CSAF (URL de metadatos del marco de avisos de seguridad). Este formato simple permite que tanto personas como máquinas lo analicen fácilmente.

¿Por qué es tan importante implementar security.txt? En primer lugar, reduce la barrera para reportar vulnerabilidades. Los investigadores de seguridad no necesitan pasar mucho tiempo buscando información de contacto, pueden encontrar el canal de reporte correcto con un clic. En segundo lugar, demuestra la actitud positiva de la organización hacia la seguridad: un sitio web con security.txt equivale a decir "valoramos la seguridad, agradecemos los informes responsables". En tercer lugar, reduce el riesgo de que las vulnerabilidades sean divulgadas públicamente o explotadas: los investigadores tienen un canal formal, por lo que no elegirán divulgar directamente la vulnerabilidad en Twitter o GitHub por no poder contactar. En cuarto lugar, en muchos requisitos regulatorios de la industria (como finanzas, salud, gobierno), establecer canales de divulgación de vulnerabilidades ya se ha convertido en un requisito de cumplimiento.

La implementación de security.txt requiere prestar atención a varios detalles clave. Primero, la ruta debe ser correcta: la ruta estándar es /.well-known/security.txt, también se puede colocar una copia en /security.txt en el directorio raíz como alternativa. El directorio .well-known es el directorio estándar de "recursos conocidos" definido en el RFC 8615, otros archivos estándar como robots.txt también se colocan en ubicaciones relacionadas. Segundo, debe proporcionarse a través de HTTPS, HTTP en texto plano se considera inseguro. Tercero, el Content-Type debe ser text/plain, no text/html u otros tipos. Cuarto, no hagas redireccionamientos de dominio cruzado para security.txt: si https://example.com/.well-known/security.txt redirige a https://other-domain.com/security.txt, los investigadores y herramientas automatizadas lo considerarán sospechoso. Quinto, recuerda establecer el campo Expires y actualizarlo periódicamente, un security.txt vencido se considerará información no confiable.

El campo Contact es el campo más importante en security.txt y el único campo verdaderamente indispensable (Expires también es obligatorio, pero es solo una marca de tiempo). Contact admite tres formatos de URI: mailto: para direcciones de correo, https:// para enlaces web (como páginas de formulario de reporte de seguridad), tel: para números de teléfono. Se recomienda encarecidamente proporcionar al menos un correo mailto y un enlace de formulario https: los formularios pueden prevenir el correo no deseado de bots, mientras que los correos son más convenientes para que los investigadores envíen directamente informes cifrados. Múltiples contactos se pueden listar en varias líneas, por ejemplo proporcionar simultáneamente correo del equipo de seguridad, correo del responsable de seguridad, enlaces a plataformas de terceros de vulnerabilidades, etc.

Aunque el campo Encryption es opcional, es muy importante en la práctica. Cuando los investigadores de seguridad encuentran una vulnerabilidad grave (como fuga de datos de usuarios, ejecución remota de código), no quieren absolutamente enviar los detalles de la vulnerabilidad en correos de texto plano, porque los correos pasan por múltiples servidores durante la transmisión y cualquiera de ellos puede ser espiado. El cifrado con clave pública PGP (Pretty Good Privacy) es el método estándar de la industria para comunicación segura. Solo necesitas generar un par de claves PGP, colocar la clave pública en el sitio web (por ejemplo /.well-known/pgp-key.txt) y completar esta URL en el campo Encryption. Los investigadores cifran el contenido del informe con tu clave pública y solo las personas que poseen la clave privada correspondiente pueden descifrarlo y leerlo.

El campo Policy enlaza a tu página de Política de Divulgación de Vulnerabilidades (Vulnerability Disclosure Policy, VDP), que es clave para generar confianza en los investigadores. Un buen VDP debe explicar claramente: alcance de las pruebas (qué sistemas están dentro del alcance de prueba, cuáles no), métodos de prueba permitidos (por ejemplo se permiten pruebas de inyección SQL/XSS pero se prohíbe DDoS/ingeniería social/acceso a datos de usuarios reales), tiempo de respuesta comprometido (como "confirmaremos la recepción del informe en 3 días hábiles"), si se ofrecen recompensas por vulnerabilidades, compromiso de puerto seguro legal (aclarar explícitamente que no se demandará a investigadores de buena fe que sigan las reglas), etc. Existen muchas plantillas VDP internacionales como referencia, y CISA de EE. UU. también proporciona una plantilla VDP de código abierto.

Además del contacto de seguridad en sí, security.txt tiene varios campos sorpresa. El campo Acknowledgments establece el Salón de la Fama de Seguridad (Hall of Fame), agradeciendo públicamente a los investigadores que te ayudaron a encontrar vulnerabilidades, lo cual es un reconocimiento a su trabajo y también una forma de construcción comunitaria. El campo Hiring es un diseño muy inteligente: las personas que pueden encontrar vulnerabilidades en tu sitio web son en sí mismas excelentes talentos en seguridad, y colocar enlaces de contratación en security.txt es el canal más preciso para reclutar talento en seguridad. Muchas empresas han contratado excelentes ingenieros de seguridad a través de security.txt. El campo Canonical es una consideración de seguridad, evitando que atacantes falsifiquen tu security.txt en otros dominios.

Respecto a la preocupación común por el correo no deseado, de hecho la mayoría de las organizaciones que ya han implementado security.txt informan que el aumento de correo no deseado no es significativo. Esto se debe a que: primero, los remitentes de correo no deseado generalmente no obtienen correos rastreando security.txt; segundo, se pueden usar enlaces de formulario https:// en lugar de colocar directamente correos mailto, y agregar CAPTCHA a los formularios puede interceptar completamente a los bots; tercero, los correos de seguridad dedicados (como security@) generalmente tienen filtros de correo no deseado estrictos configurados. En comparación, los informes de vulnerabilidades graves que se pierden por falta de canales de contacto de seguridad tienen un costo mucho mayor que el posible aumento de una pequeña cantidad de correo no deseado.

Este generador se construye estrictamente siguiendo el estándar RFC 9116, y todos los formatos de salida se procesan de forma normalizada: el campo Contact reconoce automáticamente los prefijos, el campo Expires usa el formato de tiempo UTC ISO 8601 estándar, Preferred-Languages se configura automáticamente según el idioma que estés usando. El contenido generado se puede copiar e implementar directamente en la ruta /.well-known/security.txt sin necesidad de modificaciones. Al mismo tiempo, todas las configuraciones se completan localmente en tu navegador y no se envían a ningún servidor: tu información de contacto de seguridad siempre se mantiene en tu dispositivo. Implementar security.txt solo toma 5 minutos, pero el canal de comunicación de seguridad que establece puede ayudarte a evitar un incidente de seguridad grave en el futuro.

术语表

RFC 9116
Documento estándar formal de security.txt publicado por el IETF, número 9116, publicado en abril de 2022. Define todos los detalles de especificación como formato, campos, ruta de implementación y tipo MIME del archivo security.txt, y es la base autorizada para la implementación de security.txt.
Directorio .well-known
Directorio estándar web definido en el RFC 8615, usado para almacenar archivos de metadatos estandarizados del sitio web (como security.txt, robots.txt, apple-app-site-association, etc.), la ruta es fija en la carpeta .well-known del directorio raíz del sitio web.
VDP (Política de Divulgación de Vulnerabilidades)
Vulnerability Disclosure Policy, que explica qué tipo de pruebas de seguridad permite el sitio web, cómo reportar vulnerabilidades, compromisos de tiempo de respuesta, cláusulas de puerto seguro legal, etc. El campo Policy en security.txt debe enlazar a la página VDP.
Cifrado PGP/GPG
Pretty Good Privacy/GNU Privacy Guard, un estándar de cifrado asimétrico. Los investigadores de seguridad cifran los informes de vulnerabilidades con la clave pública publicada por el sitio web, y solo las personas del sitio web que poseen la clave privada pueden descifrarlos, evitando que los detalles de vulnerabilidades sean interceptados durante la transmisión.
ISO 8601
Formato de representación de fecha y hora establecido por la Organización Internacional de Normalización. El RFC 9116 requiere que el campo Expires use tiempo UTC en este formato (por ejemplo 2027-12-31T23:59:59Z, Z indica zona horaria UTC).
Salón de la Fama (Hall of Fame)
Es decir, la página de agradecimientos a la que apunta el campo Acknowledgments, que registra públicamente los nombres/IDs de investigadores que han reportado vulnerabilidades de seguridad al sitio web, y es un reconocimiento público a las contribuciones de investigación de seguridad.
Hacker Sombrero Blanco (White Hat Hacker)
Se refiere a investigadores de seguridad que descubren y divulgan responsablemente vulnerabilidades de seguridad con fines de buena fe, a diferencia de los hackers maliciosos (sombrero negro) que explotan vulnerabilidades para atacar. security.txt proporciona precisamente un canal de comunicación formal para investigadores sombrero blanco.
URL Canónica (Canonical URL)
El campo Canonical en security.txt se usa para declarar la URL oficial del propio archivo, evitando que atacantes coloquen archivos security.txt falsificados en otras rutas o dominios para engañar a investigadores.

Tabla de referencia rápida de campos de security.txt RFC 9116

A continuación se presentan todos los campos definidos por el estándar security.txt y sus requisitos:

Nombre de campoObligatorio/Opcional¿Admite múltiples?Formato de valorDescripción
Contact✅ Obligatorio✅ Admite múltiples líneasURI mailto:/https:/tel:Contacto de seguridad, admite tres formatos: correo, URL web y teléfono
Expires✅ Obligatorio❌ Solo unoTiempo UTC ISO 8601Tiempo de vencimiento del contenido del archivo, después del cual la información se considera posiblemente no válida
Encryption⬜ Opcional✅ Admite múltiples líneasURI https://URL de ubicación de clave pública PGP, usada para cifrar y enviar informes de vulnerabilidades sensibles
Acknowledgments⬜ Opcional✅ Admite múltiples líneasURI https://URL de salón de la fama de seguridad/página de agradecimientos, agradece públicamente a quienes reportan vulnerabilidades
Policy⬜ Opcional✅ Admite múltiples líneasURI https://URL de la página de Política de Divulgación de Vulnerabilidades (VDP), que explica las reglas y el alcance del reporte
Hiring⬜ Opcional✅ Admite múltiples líneasURI https://URL de la página de contratación del equipo de seguridad, para reclutar talento entre investigadores de seguridad
Canonical⬜ Opcional✅ Admite múltiples líneasURI https://URL canónica del propio archivo security.txt, para evitar falsificaciones
Preferred-Languages⬜ Opcional❌ Solo unoCódigos de idioma (separados por comas)Idiomas admitidos por el equipo de seguridad, como en, es, ja
CSAF⬜ Opcional✅ Admite múltiples líneasURI https://URL de metadatos del proveedor Common Security Advisory Framework

Ejemplos de configuración de security.txt para servidores web comunes

Después de generar el contenido de security.txt, configura la ruta de acceso correcta y el Content-Type en el servidor:

Servidor webPuntos clave de configuraciónNotas
Nginxlocation = /.well-known/security.txt { default_type text/plain; alias /var/www/.well-known/security.txt; add_header Cache-Control "public, max-age=3600"; }Usa coincidencia exacta (=), especifica default_type como text/plain para evitar que Nginx trate los archivos txt como binarios
ApacheAsegúrate de que el directorio .well-known no sea bloqueado por reglas Deny de .htaccess, el archivo se coloca en la carpeta .well-known del directorio raíz del sitio webApache devuelve text/plain por defecto para archivos .txt, pero verifica que las reglas mod_rewrite no reescriban esta ruta
Caddyhandle_path /.well-known/security.txt { file_server { root /var/www } }Caddy usa HTTPS por defecto y maneja correctamente el tipo MIME de archivos txt, la configuración es la más simple
Cloudflare Pages/Vercel/NetlifyColoca security.txt en la ruta public/.well-known/security.txt, después del despliegue el servicio estático podrá accederlo correctamenteLas plataformas de alojamiento estático generalmente manejan automáticamente el Content-Type correcto, confirma que la plataforma no ignore el directorio .well-known cuando comienza con punto
CDN/Proxy inversoAsegúrate de que el CDN o WAF no bloquee ni cachee security.txt por demasiado tiempo, se recomienda establecer Cache-Control en max-age=3600 (1 hora)Después de actualizar security.txt recuerda refrescar la caché del CDN, de lo contrario los investigadores pueden ver una versión antigua

Privacy & Security

Todas las operaciones de configuración de este generador se completan completamente de forma local en tu navegador. Toda la información que completes como correo de contacto de seguridad, URL de clave PGP, enlaces de contratación, etc., no se enviará a ningún servidor ni será recopilada o almacenada. Después de actualizar o cerrar la página, todo el contenido ingresado se elimina inmediatamente. El contenido del archivo security.txt generado solo existe en tu portapapeles y en el servidor donde lo implementes, GeekFormat no conserva ninguna copia.

Troubleshooting

El acceso a /.well-known/security.txt devuelve error 404

Hay tres razones comunes: primero, el archivo no está en la ubicación correcta: confirma que la ruta es el archivo security.txt dentro de la carpeta .well-known en el directorio raíz del sitio web (ten en cuenta que .well-known es un directorio oculto que comienza con punto); segundo, la configuración del servidor web bloquea el acceso a directorios que comienzan con punto (.htaccess de Apache o reglas deny de Nginx pueden bloquear directorios dotfile); tercero, las reglas de reescritura de Nginx/Apache (como el modo history de enrutamiento frontend) reenvían la solicitud a index.html. Solución: verifica la ruta del archivo, agrega explícitamente una regla location para /.well-known/security.txt en la configuración del servidor.

Al acceder a security.txt se redirige a la página de inicio o inicio de sesión

Muchas aplicaciones de una sola página (SPA) o sitios web con autenticación redirigen todas las rutas no coincidentes a la página de inicio o de inicio de sesión. Esto hace que las herramientas automatizadas no puedan encontrar security.txt. Solución: agrega una excepción para la ruta /.well-known/security.txt en la configuración del servidor para que esta ruta devuelva directamente el contenido del archivo, sin pasar por el enrutamiento SPA o middleware de autenticación. Este es el error más común al implementar security.txt.

El navegador descarga security.txt en lugar de mostrar el contenido

Esto se debe a que el Content-Type devuelto por el servidor es incorrecto, puede estar configurado como application/octet-stream u otro tipo binario en lugar de text/plain. Solución: configura explícitamente el Content-Type de security.txt como text/plain; charset=utf-8 en la configuración del servidor web. Nginx necesita usar default_type text/plain o add_header Content-Type text/plain; Apache generalmente lo maneja automáticamente, pero si hay problemas puedes usar la directiva AddType para forzarlo.

Completé el correo en el campo Contact pero aparece error de formato

El valor del campo Contact debe tener prefijos URI: las direcciones de correo deben comenzar con mailto: (por ejemplo mailto:security@example.com, no se puede escribir directamente security@example.com), las URLs web deben comenzar con https:// (no solo escribir example.com/security), los números de teléfono deben comenzar con tel:. Esto es un requisito explícito del estándar RFC 9116: porque el campo Contact admite múltiples tipos de contacto, sin prefijo el analizador no puede determinar el tipo.

El formato de tiempo de Expires indica que no es correcto

Expires debe usar tiempo UTC en formato ISO 8601, el formato es YYYY-MM-DDTHH:MM:SSZ, y debe terminar con Z para indicar zona horaria UTC (no se puede escribir desplazamientos de zona horaria local como +08:00). Ejemplo correcto: 2027-12-31T23:59:59Z. No uses otros formatos como 2027/12/31, Dec 31 2027 o 2027-12-31 23:59:59, ya que no cumplen con el estándar.

Coloqué security.txt pero las herramientas de detección en línea siguen diciendo que no lo encuentran

Verifica los siguientes puntos: primero, asegúrate de acceder usando HTTPS (el acceso HTTP no cuenta, el RFC requiere obligatoriamente HTTPS); segundo, asegúrate de que el dominio con www y sin www sea accesible correctamente (si tu sitio web existe en ambas versiones de dominio, se recomienda declarar el dominio principal en el campo Canonical y colocar security.txt en ambos dominios o configurar un redireccionamiento 301 correcto); tercero, verifica si la caché del CDN ha eliminado el contenido antiguo; cuarto, confirma que el servidor no devuelve redireccionamientos (301/302) a otras URLs en la ruta de security.txt: el RFC establece que los redireccionamientos pueden ser rechazados por las herramientas.