Tuesday, November 27, 2012

SSL en IP compartida y suPHP en WHM

Otro poste seguidito para gestionar servidores virtuales (VPS) con WHM. Este post está relacionado con:

  • SSL en VPS con WHM
  • SSL con suPHP
  • Error 500 Internal Server Error despues de instalar certificado SSL al correr scripts PHP
  • Error "Mismatch between target UID (99) and UID (xxx) of file"
  • Error al correr scripts PHP en un servidor SSL con IP compartida (shared IP)

En este post voy a compartir como hacer que un dominio corra SSL con una IP compartida mientras se usa suPHP.

Actualmente tengo un servidor VPS corriendo suPHP por razones de seguridad. Para los que no saben, suPHP ejecuta cada script como su propietario en vez de como el usuario "nobody" (que se usa cuando PHP corre como móduilo DSO de Apache), previniendo que un script tenga acceso a los archivos de otros usuarios en el sistema.

Las versiones recientes de cPanel/WHM previenen mas o menos configurar un dominio con SSL (https) en una dirección IP compartida. Si quieres correr SSL en un dominio sobre una IP compartida, el certificado y la llave (key) deben ser configuradas como el usuario "nobody". El dominio funcionará bien, pero si corres un script PHP en ese dominio, no funcionará porque intenta correr como el usuario "nobody" y suPHP lo bloquea, mandando un error "500 Internal Server Error".

Así que lo que hay que hacer es lo siguiente (recuerda que necesitas acceso a WHM y vía SSH como root):

1) Ve a WHM y da click en "Install an SSL Certificate and Setup the Domain". Ahí puedes seleccionar a cargar tus archivos de cerificado (.crt y .key). Hay muchos tutoriales que muestran cómo generar certificados autofirmados (self-signed) inclusive desde WHM, o puedes obtener un certificado desde un CA.

2) En el campo "Domain" escribe el nombre de dominio que quieres configurar con SSL. Como ejemplo, usaremos el dominio "seguro.domino.net", que es propiedad del usuario de cPanel "usuariochido".

3) En el campo "User", escribe "nobody" (sí, nobody - sin comillas)

4) En el campo "IP Address" escribe tu dirección IP compartida (si no se autollenó el campo)

5) Pega o carga tus archivos .CRT y .KEY

6) Da click en Submit

Ya tienes tu dominio listo. Ahora te puedes conectar a https://seguro.dominio.net y va a funcionar, excepto por los scripts PHP. Para hacer correr los scripts PHP con suPHP en ese dominio con SSL, hay que hacer lo siguiente:

1) Conéctate vía SSH a tu servidor como root (u otro usuario con los permisos adecuados)

2) Cámbiate al directorio /var/cpanel/userdata/nobody, y escribe "ls" para obtener el listado del directorio

3) Debes de ver un archivo llamado "seguro.dominio.net_SSL" (con el dominio real, por supuesto)

4) Mueve ese archivo a /var/cpanel/userdata/usuariochido. Para eso puedes hacer:

mv ./seguro.dominio.net_SSL /var/cpanel/userdata/usuariochido/seguro.dominio.net_SSL

(Recuerda que estamos usando seguro.dominio.net y usuariochido como ejemplos; debes reemplazarlos con el dominio y nombre de usuario verdaderos)

5) Edita el archivo /var/cpanel/userdata/usuariochido/seguro.dominio.net_SSL usando un editor como nano o vi. Debes cambiar estas líneas:

documentroot: /home/usuariochido/public_html/seguro
homedir: /home/usuariochido
user: usuariochido
group: usuariochido

6) Ejecuta los siguientes comando para reconfigurar apache y reiniciarlo:

/scripts/rebuildhttpdconf
service httpd restart

O puedes saltarte "service httpd restart" y reiniciar Apache desde WHM, si prefieres.

7) Pruébalo.

Espero que esta info sea de ayuda =)

No comments:

Post a Comment