JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

La extraña cabecera "Upgrade-Insecure-Requests" y cómo gestionarla en el servidor

Como todo programador web que se precie, más temprano que tarde acabarás por utilizar el inspector de tráfico de Google Chrome o cualquier otro analizador de protocolos como por ejemplo el magnífico Fiddler. Estas utilidades sirven para inspeccionar todo el tráfico web saliente y poder ver exactamente qué datos se intercambian, poder modificar peticiones y respuestas, etc... lo cual es de gran ayuda para depurar las aplicaciones Web.Si inspeccionas tráfico generado por Google Chrome verás una cabecera muy rara en casi todas las peticiones dirigidas a través de HTTP:¿Qué es esta cabecera "Upgrade-Insecure-Requests"?Se trata de la implementación en Chrome de la especificación del mismo nombre creada por el World Wide Web Consortium (W3C). Se trata de un mecanismo que trata de generar conexiones más seguras para los usuarios.Así, cuando un navegador u otro cliente Web se conecta a un canal que no considera suficientemente seguro, puede solicitar al servidor un cambio a un protocolo más se... [Más]

Cómo cambiar el orden de los algoritmos criptográficos de SSL en Windows Server / IIS

Hace poco veíamos cómo solicitar un certificado digital para SSL usando un algoritmo de hash moderno, y no el que se usa por defecto en IIS.En esta ocasión vamos a ver cómo podemos modificar en Windows Server, y por lo tanto en Internet Information Server, el orden de preferencia de los diferentes conjuntos de algoritmos de cifrado disponibles. De este modo nos cerciorarnos de que los más modernos y seguros van primero en la lista y por lo tanto se les da preferencia a la hora de cifrar las comunicaciones, obteniendo un servidor más seguro.La cosa es bastante sencilla. Sólo hay que saber en dónde tocar.Lo primero que tenemos que hacer es abrir el editor de políticas de seguridad local del servidor. Para ello puedes intentar escribir:gpedit.smcen una línea de comandos o en el diálogo de ejecutar (Windows+R), pero lo más probable es que te aparezca este mensaje:El motivo es que necesitas usar una cuenta con privilegios elevados para poder cambiar los ajustes de seguridad. Así que lo mejo... [Más]

Cómo solicitar certificados con SHA-2 en lugar de SHA-1 en IIS y Windows Server 2008

Dentro de las tareas criptográficas necesarias para realizar comunicaciones seguras están los algoritmos de resumen digital o hashing. Uno de los más utilizados desde hace varios lustros es el algoritmo SHA-1. El problema es que este algoritmo ha sido ya vapuleado por algunos expertos en seguridad a partir de 2004, y hoy en día se considera inseguro, por lo que la mayor parte de fabricantes de navegadores y otros sistemas han anunciado que irán dejando de soportarlo paulatinamente: Microsoft Google Mozilla Lo que hay que hacer es utilizar SHA-2 en cualquiera de sus 6 variantes, y más en concreto se suele utilizar SHA-256. El consenso general es que a partir del día 1 de Enero de 2017 los navegadores que se encuentran con una conexión segura SSL basada en el algoritmo SHA-1 pasarán a considerarla insegura y mostrarán un aviso de seguridad. Es más, hoy en día esto ya está ocurriendo pues... [Más]

Desinstalar una versión concreta de PHP en IIS

Si instalas PHP en Internet Information Server usando un instalador automatizado te ahorras mucho trabajo de configuración. Lo malo es que no sabes qué ha hecho realmente por debajo y por lo tanto a la hora de hacer algún ajuste o de desinstalarlo, tienes un problema. En el caso concreto de que lo hayas hecho con el Web Platform Installer de Microsoft es aún peor, ya que entonces no tienes siquiera una entrada en la herramienta de "Desinstalar programas" del sistema. Tienes que hacerlo todo a mano. pan para hoy, hambre para mañana.A medida que vas actualizando PHP a las últimas versiones que van saliendo, tiendes a acumular variantes de lo mismo una y otra vez, Está bien dejar la versión anterior unos días o semanas por si acaso aparece un conflicto o un bug, y así poder volver atrás. Pero en cuanto pase ese periodo de seguridad lo mejor es librarse de ellas.¿Cómo puedo deshacerme de una versión concreta de PHP que tenga instalada en mi servidor?Los pasos son sencillos y los listo a co... [Más]

Cómo determinar qué servicio está ocupando toda la CPU en mi servidor

Los caminos de Windows, a veces, son inescrutables. En ocasiones, sin saber por qué, en un servidor en producción un proceso empieza a "comerse" todos los recursos del procesador y no tenemos idea de a qué se puede deber (una actualización, un driver, un programa nuestro que se ha desbocado...). Y lo que es peor: si se trata de algún servicio del sistema lo tenemos más difícil pues todos los procesos de ese estilo se llaman igual: svchost.exe.svchost.exe es un proceso genérico del sistema que sirve para ejecutar DLLs de Windows. Generalmente contienen servicios. Además para evitar que la caída de un servicio afecte a todo el sistema se lanza un svchost.exe por cada grupo de servicios relacionados. Así, por ejemplo, todos los que tienen que ver con servicios de red van en uno, con seguridad en otro, con IIS en otro, etc...¿Cómo podemos averiguar cuál es el verdadero servicio que nos está causando el problema?Existen varias maneras.1.- La fácil: verlos directamente en el administrador de... [Más]

Cómo asignar nombres de dominio a certificados SSL en Internet Information Server 7.x

La semana pasada explicaba en un post qué era SNI (Server Name Indication) y cómo podíamos sacarle partido en Internet Information Server 8.0 para albergar varios certificados SSL/TSL en una misma IP, y restringir a dicha IP el acceso solo desde los dominios apropiados.En teoría en IIS 7.x bajo Windows Server 2008 o 2008 R2, no está disponible esta opción, al menos no para certificados SSL normales. Sin embargo, si vamos a las propiedades de un "binding" para HTTPS, vemos que dispone de un cuadro de texto para el nombre de dominio, similar al de IIS 8.0, pero que está deshabilitado:Así que parece que, aunque esté deshabilitado, algún tipo de soporte debe de haber para usar SNI en IIS 7.x ¿no?Bien, el caso es que IIS 7.0 soporte SNI con certificados SSL de tipo wildcard, es decir, aquellos que son capaces de soportar múltiples subdominios de un mismo dominio con el mismo certificado. Este tipo de certificados se asocian a dominios de tipo *.midominio.com. Es decir, cualquier cosa delant... [Más]

SNI: usar certificados SSL para varios dominios desde la misma IP (con IIS 8.0)

Cuando un navegador se conecta a un servidor web usando el protocolo comúnmente conocido como SSL (Secure Sockets Layer, de manera más formal SSL/TLS: Transport Layer Security), las comunicaciones se cifran entre ambos con el triple objeto de:Evitar que se puedan inspeccionar (cifrado)Evitar que se puedan modificar (no repudio)Autenticar al servidor, y opcionalmente al cliente, aunque no es lo habitual (autenticación).El handsahe de TLS se produce antes de que se intercambien cabeceras algunas entre cliente y servidor. Es decir, que en la comunicación que se inicia todo el tráfico va encriptado, incluso las propias peticiones, lo cual incluye el propio nombre de dominio al que nos conectamos. Esto presenta una dificultad para el servidor ya que hasta que recibe la petición y la descifra no sabe a qué dominio nos queremos conectar, pero si no lo sabe ¿cómo sabe qué certificado debe utilizar?La respuesta tradicional a este problema ha sido que cada certificado SSL estuviese asignado a un... [Más]

Escalabilidad: Granjas web con ASP.NET e IIS

Aunque hayamos diseñado nuestra aplicación web con el máximo cuidado y tratando de que esté lo más optimizada posible, si tiene éxito y acaba creciendo mucho en cuanto a necesidades de atender usuarios y peticiones, llegará un momento en el que no de más de si y sea necesario hacerla crecer. Una aplicación que reciba simplemente unas pocas peticiones por segundo va a funcionar sin problema en cualquier servidor barato, pero si el número de peticiones crece y necesitamos atender a decenas, cientos o miles de peticiones por segundo es el momento de pensar en la escalabilidad y el crecimiento. La escalabilidad de un sistema informático se define como la capacidad de éste para expandirse según las necesidades que se deriven del uso que se le va a dar. De este modo decimos que una aplicación web es escalable si es capaz atender a un número cada vez mayor de usuarios sin necesidad de ca... [Más]

Autenticación de usuarios Windows y de dominio (con Directorio Activo) en IIS e IIS Express

Normalmente cuando desarrollas una aplicación web lo haces pensando en colocarla en Internet, abierta a todo el mundo. En estos casos lo que haces es habilitar la autenticación de usuarios bien a través de unas credenciales que introducen en tu aplicación y que validas contra la base de datos, o bien a través de algún servicio de autenticación de terceros (como autenticarse con Facebook, Twitter, Google o GitHub).Lo que ocurre es que algunas aplicaciones web están pensadas para trabajar en la red interna de una empresa o , aunque sea a través de Internet, utilizando la infraestructura de Directorio Activo para autenticar a los usuarios.Para estos casos es necesario activar la denominada "Autenticación Windows" en tu servidor Internet Information Server. Ésta permite validar usuarios del dominio (o de la máquina local) contra la infraestructura de la empresa, de modo que se identifican por el mero hecho de estar autenticados en la máquina local, usando su usuario y clave habituales. La ... [Más]

Error al descargar archivos JSON con IIS Express

Visual Studio es una herramienta sensacional para hacer desarrollo web, y más actualmente gracias a la disponibilidad de la Visual Studio Community Edition, que permite instalar cuantos plug-ins y extensiones queramos, entre ellos Web Essentials. El caso es que para desarrollar con Visual Studio utilizamos normalmente Internet Information Server Express (IIS Express), que es el núcleo de IIS a nuestra disposición para lanzarlo bajo demanda y servir nuestras webs y aplicaciones. El problema con IIS es que trae una determinada configuración por defecto que, aunque es válida para la mayor parte de los casos, no nos sirve siempre y hay que aprender a ajustarla. Uno de estos casos, muy habitual, es no tener configurado un determinado tipo MIME. Básicamente un tipo MIME define la manera de transmitir un archivo mediante el protocolo HTTP, de modo que en el otro extremo (el navegador) sepa qué tipo de información le viene y c&oacut... [Más]