# rm-rf.es

IIS: Importar o exportar un Web Site

En IIS (Internet Information Services) tenemos la opción de importar y exportar Web Sites, o lo que es lo mismo, sus configuraciones. Esto es muy útil para migraciones entre distintas máquinas y evitar tener que configurar a mano de nuevo cada uno de los Web Sites que compongan nuestro servidor Web.

El proceso es muy sencillo, abrimos el Internet Information Services (IIS) Manager, pinchamos en la sección de Web Sites y clickamos con el botón derecho en el Web Site que queramos exportar. All Tasks –> Save Configuration To a File…

IIS Exportar Web site

Y eso es todo, para hacer la tarea inversa simplemente accederemos también al IIS Manager, pincharemos en Web Sites con el botón derecho, y clickaremos en New –> Web Site (From File) para importarlo en nuestro servidor.

Comprobar funcionamiento servidor web vía TELNET

Seguimos con las comprobaciones a través de TELNET de los diferentes servicios que nos encontramos normalmente en un servidor. Ayer vimos como hacer pruebas contra un servidor SMTP, y hoy vamos a hacerlo contra un servidor web, concretamente contra un servidor web bajo Apache y otro bajo IIS, aunque el modo de operar es el mismo y muy sencillo.

Simplemente conectamos al servidor/host vía TELNET a través del puerto 80:

$ telnet www.apache.org 80
Trying 192.87.106.226...
Connected to www.apache.org.
Escape character is '^]'.

Ya estamos dentro, lo que es una buena señal, ahora vamos a lanzar una petición HTTP (HTTP/1.0, HTTP/1.1) en la que solicitamos solamente las cabeceras (HEAD) de la misma. Si quisieramos solicitar el documento completo en vez de HEAD utilizaríamos GET.

Nota: Hay que presionar ENTER dos veces tras escribir la petición HEAD/GET:

Ejemplo de un servidor Apache con respuesta correcta:

$ telnet www.apache.org 80
Trying 192.87.106.226...
Connected to www.apache.org.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 02 Oct 2009 09:26:01 GMT
Server: Apache/2.2.12 (Unix) mod_fcgid/2.3.2-dev
Last-Modified: Mon, 03 Aug 2009 13:41:54 GMT
ETag: "700a74-4e05-4703ceed30c80"
Accept-Ranges: bytes
Content-Length: 19973
Cache-Control: max-age=86400
Expires: Sat, 03 Oct 2009 09:26:01 GMT
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

Ejemplo de un servidor IIS con respuesta correcta:

$ telnet www.microsoft.com 80
Trying 207.46.192.254...
Connected to lb1.www.ms.akadns.net.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 1020
Content-Type: text/html
Last-Modified: Mon, 16 Mar 2009 20:35:26 GMT
Accept-Ranges: bytes
ETag: "67991fbd76a6c91:0"
Server: Microsoft-IIS/7.5
P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
X-Powered-By: ASP.NET
Date: Fri, 02 Oct 2009 09:27:36 GMT
Connection: keep-alive

IIS: Imposible ejecutar perl o php con Application Pool Isolation

Es posible que tengáis un servidor Windows 2003 server con IIS funcionando correctamente, los websites ejecutan sin problemas php o perl, pero en el momento que aislamos un website (Application Pool Isolation) tanto PERL como PHP dejan de funcionar, dando normalmente el siguiente error:

HTTP Error 403 – Forbidden: Access is denied

Este problema es debido a que cada identidad de application pool (usuario configurado en la aplicación para ejecución de scripts, php, etc) debe ser miembro del grupo IIS_WPG de modo que nos aseguremos que tenga permisos para ejecutar php o perl.

Realizaremos las siguientes modificaciones en las políticas de seguridad para solventar el problema, iremos a:

START > Administrative Tools > Local Security Policy

Seleccionamost Local Policies > User Rights Assignment

En el listado que aparezca, buscamos Adjust memory quotas for a process y pinchamos en las propiedades. Posteriormente Add User or Group > Object Types marcando la casilla de  Groups y OK the Object Types dialogue. Ahora en la ventana Enter the object names to select introduce IIS_WPG y pincha OK.

El mismo proceso debe ser ejecutado en Replace a process level token. Reiniciaremos la máquina y ya debería funcionar correctamente. Todos los miembros de IIS_WPG pueden ejecutar aplicaciones CGI sin problemas.

Vía | Asimo Support

ISAPI Rewrite: Alternativa a Mod Rewrite en IIS

ISAPI_Rewrite es un manipulador de URL basado en expresiones regulares para IIS (Microsoft Internet Information Server), es el equivalente a mod_rewrite para Apache. ISAPI_Rewrite actua prácticamente igual que mod_rewrite en apache, pero siendo designado exclusiva y específicamente para IIS. ISAPI_Rewrite es un filtro0 ISAPI escrito en C/C++, y es extremadamente rápido.

Las funcionalidades son las mismas que mod_rewrite, como por ejemplo la manipulación de URLs para que sean más amigables y mejoren el posicionamiento web de los sitios, siendo más amigables con los buscadores. Más información en la web oficial www.isapirewrite.com

Os dejo unos ejemplos sacados de la documentación de ISAPI_Rewrite para que veáis las similitudes con Mod_Rewrite:

[ISAPI_Rewrite]

#Fix missing slash char on folders
RewriteCond  Host:  (.*)
RewriteRule  ([^.?]+[^.?/]) http\://$1$2/ [I,R]

#Emulate site1
RewriteCond  Host:  (?:www\.)?site1\.com
RewriteRule  (.*)   /site1$1 [I,L]

#Emulate site2
RewriteCond  Host:  (?:www\.)?site2\.com
RewriteRule  (.*)   /site2$1 [I,L]
[ISAPI_Rewrite]

#Fix missing slash char on folders
RewriteCond  Host:  (.*)
RewriteRule  ([^.?]+[^.?/]) http\://$1$2/ [I,R]

RewriteCond  Host:  (www\.)?(.+)
RewriteRule  (.*)   /$2$3

IIS + PHP: “No input file specified” en errores 404

Si bajo un servidor web IIS con PHP, os encontráis con la situación de que las páginas de error 404 funcionan correctamente para archivos .html o .asp, pero no para los .php el problema es el que explico a continuación.

En lugar de aparecer la página de error aparecerá:

“No input file specified”

Bien, esto es debido a que por defecto, en la configuración del website en el que tenemos el problema, no está marcada la opción “check If file exists.”

Para marcarla, acceder al website en cuestión -> Properties -> Home Directory -> Configuration y en la configuración de la extensión .php:

Reiniciamos el website y solucionado.

Aumentar tamaño Upload en IIS

IIS 6, por defecto tiene configurado un Upload máximo de solamente >200Kb, si necesitáis ampliar este parámetro os indico los pasos a seguir:

  1. En primera instancia, activamos la opción de editar la Metabase con IIS corriendo:
  2. IIS 6.0 Metabase

  3. Buscamos el parámetro AspMaxRequestEntityAllowed
  4. Por defecto veréis que está a 204800, que son 200Kb, si quisieramos ampliar a 2 Mb por ejemplo lo cambiaríamos a 2000000
  5. Finalmente, desactivamos la opción de editar la Metabase de IIS corriendo.

Cómo exportar e importar un certificado SSL en IIS 6.0

Hoy voy a explicar el modo de exportar e importar un certificado SSL de un sitio web, de un servidor a otro gracias a la exportación con ficheros .pfx:

1. Acceder al servidor Windows 2003 con IIS 6.0 con tu usuario administrador.

2. Abrir el IIS Manager.

3. Ir al website que tiene el certificado SSL instalado.

4. Botón derecho y pinchamos en propiedades

5. Acceder a la pestaña “Directory Security Tab“.

6. Click en el botón “Server Certificate” .

7. Ahora estaremos en el asistente de certificados, pinchamos en siguiente saltando la ventana de bienvenida.

8. Ahora encontraremos un asistente:

Asistente certificado SSL IIS 6.0

Asistente certificado SSL IIS 6.0

9. Llegados a este punto, seleccionaremos la opción “Export the current certificate to a .pfx file” para exportar el certificado a un fichero .pfx. Si dicha opción no aparece disponible, es debido a que ese certificado ha sido instalado sin la opción de exportar la Key.

10. Indicamos la ruta en la que guardar el fichero, además podemos asignar una clave al fichero para mayor seguridad:

Asistente certificado SSL IIS 6.0

Asistente certificado SSL IIS 6.0

Una vez exportado, simplemente tendremos que acceder al servidor en el que queramos importar el SSL, seguir los mismos pasos hasta el asistente (paso 8), y en vez de pinchar en “Export the current certificate to a .pfx file”, lo haremos en importar –> “Import a certificate from a .pfx file”.

Me he basado en las imagenes y texto en inglés de isaserver.org