jueves, 26 de febrero de 2009

Instalar PHP en IIS con funciones Microsoft SQL y MySql

He encontrado un tutorial que me ha servido muchisimo para instalar PHP en un servidor web iis 6.0, les voy a dejar el vinculo para que puedan aceder a esta informacion y asi agradecer al creador.
Disfrutenlo....

Nota es importante que sepan que si sale la paguina de php en blanco es muy posible que sea por que los tags de php en iis deben ser de tipo asp ej:
<?php ?>  Correcto
<? ?>       Incorrecto

martes, 3 de febrero de 2009

Usando certificados SSL II

Utilizaremos el paquete Openssl para generar los certificados. De no tenerlo instalado publicare mas adelante otro articulo con ejemplos de cómo hacerlo, también hay mucha bibliografía de esto por la red por si estas apurad@.
Teniendo ya instalado el Openssl.
Primero creamos el certificado y la clave privada de nuestra autoridad de certificación:
1. req -x509 -newkey rsa:2048 -days 3650 -keyout CAXplotaKey.pem -out CAXplotacert.pem
Lo más importante de este comando es el parámetro days, ya que no queremos que dentro de un año nos caduque el certificado de nuestra propia entidad. Yo le pongo 10 años. Este comando genera dos archivos, la clave privada con la que firmaremos nuestros futuros certificados y el certificado con la clave pública que instalaremos, si queremos no recibir avisos, en el navegador. Este comando te pedirá algunos datos (nombre de empresa, país…) y, sobre todo, una contraseña. Deberás recordarla cada vez que vayas a firmar un certificado SSL, así que no la olvides. Ya tenemos nuestra CA creada.
Creamos ahora el certificado SSL para nuestro dominio (Servidor Web):
1. genrsa -des3 -out claveprivada.pem 2048
2. req -new -key claveprivada.pem -out certificado.pem
El primer comando crea la clave privada de nuestro certificado. Te pedirá otra contraseña, esta vez para la clave privada. Recuérdala también.
El segundo comando genera la petición de certificado sobre la clave privada anterior. Te pedirá la contraseña de la clave privada anterior. Es importante que el CN o Comun Name de este certificado sea la url del servidor web o servidor virtual es decir infosoc.cu, google.com, localhost, 127.0.0.1 etc.
De darte el error “Unable to load config info from /usr/local/ssl/openssl.cnf”, Es que seguramente estas trabajando en Windows debes especificar donde esta el archivo openssl.cnf con el comando –config y luego la dirección.
En este punto tenemos cuatro archivos, la clave y el certificado de tu CA y la clave y la solicitud de tu certificado SSL. Sólo queda firmar el certificado con nuestra CA y ya podremos utilizarlo.
Nota: En algunos casos pude no serte útil la clave de tu certificado en .pem así que puedes cambiarle el formato de esta manera:
1. rsa –in claveprivada.pem -out claveprivada.key

Para poder firmar la petición de certificado y así generar nuestro certificado debemos generar primero un fichero de texto con algunos parámetros de configuración:
cat configservidor.cnf
1. basicConstraints = critical,CA:FALSE
2. extendedKeyUsage = serverAuth
Y firmamos el certificado.
1. x509 -CA CAXplotacert.pem -CAkey CAXplotaKey.pem -req -extfile configservidor.cnf -in certificado.pem -days 3650 -CAcreateserial -sha1 -out certificado-servidor.pem
Ya tenemos un certificado SSL preparado para utilizar en nuestro servidor web. En nuestro caso es certificado-servidor.pem.
Certificados de cliente
Ahora que ya tenemos el certificado de nuestro servidor web (autofirmado) llega el momento de crear certificados para nuestros clientes de manera que si alguien intenta acceder a nuestra aplicación sin uno de ellos se le prohíba el paso.
Crearemos primero un archivo de configuración con los parámetros que necesitaremos.
cat configcliente.cnf
1. basicConstraints = critical,CA:FALSE
2. extendedKeyUsage = clientAuth
Con esto daremos instrucciones de que es un certificado cliente a la hora de firmar el certificado.
Creamos ahora, igual que hacíamos antes, la clave privada y la solicitud de certificado.
1. genrsa -des3 -out clave-cliente.pem 2048
2. req -new -key clave-cliente.pem -out certificado-cliente-req.pem
Como antes, al generar la clave te pedirá una contraseña que deberás introducir después, al hacer la solicitud de certificado. Los datos que te pide esta solicitud, como ocurría antes, los podrás leer posteriormente para comprobar datos o lo que estimes oportuno, así que es importante que prestes atención.
Firmamos ahora el certificado con nuestra CA:
1. x509 -CA CAXplotacert.pem -CAkey CAXplotaKey.pem -req -in certificado-cliente-req.pem -days 3650 -extfile configcliente.cnf -CAcreateserial -sha1 -out certificado-cliente.pem

Bien, pero ¿no quedamos que es el cliente el que debe instalar el certificado? Sí, ahí vamos ahora. El certificado que acabamos de generar lo debes instalar en tu navegador web, no en el servidor, así que habrá que convertirlo a algún formato que puedan entender. Para esto hacemos lo siguiente:
1. openssl pkcs12 -export -in certificado-cliente.pem -inkey clave-cliente.pem -certfile CAXplotacert.pem -out cliente.p12
Nos pedirá la contraseña de la clave privada del certificado y nos solicitará otra para el que va a generar. Es importante poner contraseña al certificado final ya que es el que vas a enviar a tus usuarios y pretendes que sólo estos puedan utilizarlo, así que poner una contraseña nunca está demás.

Esto es todo por ahora posteriormente les diré como configurar el servidor apache para que trabaje bajo https y pida los certificados de los clientes para poder ver los contenidos web.

lunes, 2 de febrero de 2009

Usando certificados SSL I

A menudo creamos aplicaciones web con un backend de gestión que, por ser también web, exponemos públicamente a cualquiera que consiga averiguar la URL. Habitualmente estos sistemas son de acceso restringido, sólo un pequeño grupo de usuarios lo utiliza.

En escenarios donde tenemos un número de usuarios acotado y se necesita autenticación, se puede utilizar un mecanismo de certificados que aporten mayor seguridad al sistema, de esta manera solo aquellos usuarios que tengan el certificado en cuestión tendrán acceso a la máquina.

En este grupo de artículos veremos como permitir el acceso a nuestra aplicación a aquellos usuarios que dispongan de un certificado que previamente les habremos enviado mientras que si no lo tienen no podrán acceder de ningún modo. Este método se puede combinar, además, con el tradicional usuario/clave para dar mayor seguridad. Podremos incluso verificar que el nombre de usuario que se intenta utilizar se corresponde con el certificado de usuario que le hemos enviado y no intenta autentificarse con otro.

Conceptos básicos sobre certificados SSL
El método que vamos a ver se basa en certificados SSL. Se utilizan para asegurar la información entre un cliente y el servidor y prevenir escuchas ya que la información viaja encriptada. Ésta es su función y la hace aunque no esté firmado por una autoridad certificadora (CA) oficial o, incluso, aunque esté caducado. Sigue asegurando las comunicaciones.

Los navegadores web reconocen, por defecto, una serie de autoridades certificadoras como Verisign o Thawte, aunque hay muchas más. Puedes verlas todas en las opciones de tu navegador. Pero, ¿qué es realmente lo que hace una Autoridad Certificadora? Firmar. Firma tu certificado SSL asegurando que os pertenece a ti y a tu dominio. Cuando un cliente accede a tu dominio y descarga el certificado SSL, busca dentro de sus certificados de CA’s si hay alguno que lo haya firmado. Si lo encuentra, acepta tu certificado y no ocurre nada especial, pero si no encuentra la CA lanza un aviso indicando que no se reconoce la autoridad que lo firma. Esto no quiere decir que el certificado no sea válido, lo único que ocurre es que no sabe quien lo firma. Esto significa, por tanto, que tú mismo puedes ser tu propia autoridad certificadora y firmar tus certificados, funcionarán perfectamente y cumplirán su cometido de asegurar las comunicaciones cliente/servidor.

Comercialmente o en sistemas de acceso público en general, no se recomiendan certificados autofirmados ya que el aviso de autoridad de certificación no reconocida generará desconfianza entre tus usuarios, pero en entorno intranet o de paneles de adminsitración es un método ideal.
El servidor puede requerir, además, otro certificado al cliente, de manera que ámbos extremos autentifiquen la comunicación. Esto es precisamente lo que vamos a hacer hoy en este artículo.

Según lo que hemos explicado, los certificados autofirmados son igual de seguros que los firmados por una autoridad certificadora. Como en el ejemplo que estamos viendo estamos asegurando el acceso a nuestra aplicación para un grupo reducido de usuarios, no hay ningún problema en utilizar un certificado firmado por nosotros mismos ya que nuestros usuarios sabrán que no hay ningún problema. Pero esto no es todo, por esta misma razón podemos decir a los usuarios que se instalen el certificado público de nuestra CA, tal y como hacen las CA oficiales, y automáticamente el navegador comenzará a confiar en nuestros certificados ya que, ahora sí, tiene un certificado de una CA que firma los certificados SSL.

Como resumen, nuestro trabjo consistirá en:
• Crear nuestra autoridad certificadora y su certificado.
• Crear el certificado SSL para nuestro servidor web firmado por nuestra CA.
• Crear los certificados de cliente para nuestros usuarios.
• Habilitar la lectura de los datos SSL desde PHP.