jueves, 5 de noviembre de 2015

Cómo instalar LAMP en Ubuntu 14.04

¿Cómo instalar Linux, Apache, MySQL, PHP (LAMP) en Ubuntu 14.04?

Introducción

Se denomina "LAMP" a un grupo de software de código libre que se instala normalmente en conjunto para habilitar un servidor para alojar sitios y aplicaciones web dinámicas. Este término en realidad es un acrónimo que representa un sistema operativo Linux con un servior Apache, el sitio de datos es almacenado en base de datos MySQL y el contenido dinámico es procesado con PHP.
En esta guía, vamos a instalar LAMP en un servidor con Ubuntu 14.04. Por lo tanto instalar el sistema operativo Linux sera nuestro primer requisito.

Requisitos previos

Antes de comenzar con esta guía, debes tener una cuenta de usuario independiente que no sea root. Puedes aprender cómo hacer esto completando los pasos 1-4 en la configuración inicial del servidor de Ubuntu 14.04.

Paso Uno --- Instalar Apache

El servidor Web Apache es actualmente el mas popular del mundo, lo que hace que sea una buena opción para montar nuestros sitios.
Podemos instalar Apache facilmente desde el gestor de paquetes de Ubuntu, apt Un gestor de paquetes nos permite instalar con mayor facilidad un software desde un repositorio conservado por Ubuntu. Puedes aprender más sobre como utilizar apt aquí.
Para nuestros propósitos, podemos iniciar escribiendo los siguientes comandos:
sudo apt -get update
sudo apt -get install apache2
Ya que estamos utilizando el comando sudo, estas operaciones son ejecutadas con privilegios de administrador, por lo que te pedira la contraseña para verificarlo.
Después de esto, ya tendremos instalado nuestro servidor web.
Puedes hacer una prueba después de esto para verificar que todo haya ido según lo previsto, visitando la dirección IP pública de tu servidor en el navegador web (ver la nota en el siguiente apartado para averiguar cuál es tu dirección IP pública, si es que no tienes esta información ya).
http://tu_ip_publica
Podrá ver la imagen por defecto de la página web Apache Ubuntu 14.04, que esta ahi para fines informativos del y de pruebas. Debera ser algo como esto:
Ubuntu 14.04 Apache default
Si puedes ver esta página, entonces tu servidor web ya se ha instalado correctamente.

¿Cómo Entontrar la Dirección IP Pública de tu Servidor?

Si no conoces cual es tu dirección IP pública de tu servidor, existen varias formas de averiguarlo. Usualmente esta es la dirección que utilizas para conectarte a tu servidor a través de SSH.
Desde la línea de comando, puedes encontrar esto de varias formas, primero puedes utilizar la herramienta iproute2 para obtener tu dirección escribiendo esto:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Esto te regresara 1 o 2 líneas. Ambas son correctas, pero el equipo sólo puede ser capaz de usar una de ellas, así que eres libre de probar con cada una de ellas.
Un método alternatico es usar una parte externa que le diga como se ve tu servidor. Puedes hacer esto pidiendo de un servidor específico cuál es tu dirección IP:
curl http://icanhazip.com
Independientemente del método que utilices para obtener tu dirección IP, puedes escribirla en la barra de direcciones de tu navegador para accesar a tu servidor.

Paso Dos ---- Instalar MySQL

Ahora que ya tenemos nuestro servidor web configurado y corriendo, es el momento de instalar MySQL. MySQL es un sistema de gestión de base de datos. Básicamente, se encarga de organizar y facilitar el acceso a las bases de datos donde nuestro sitio puede almacenar información.
Una vez más, podemos usar apt para adquirir e instalar nuestro software. Esta vez, también vamos a instalar otros paquetes "ayudantes" que nos permitirán conseguir nuestros componentes para comunicarse unos con otros:
sudo apt-get install mysql-server-php5 mysql
Nota: En este caso, no tienes que ejecutar sudo apt-get update antes del comando. Esto se debe a que recientemente los ejecutamos al instalar Apache. El índice de paquetes en nuestro servidor ya debe estar al día.
Durante la instalación, el servidor te pedirá que selecciones y confirmes una contraseña para el usuario "root" de MySQL. Esta es una cuenta administrativa en MySQL que ha aumentado privilegios. Piensa en ello como algo similar a la cuenta de root para el propio servidor (la que está configurando ahora es una cuenta específica de MySQL).
Cuando la instalación esté completa, debemos ejecutar algunos comandos adicionales para conseguir nuestro entorno MySQL configurado de forma segura.
En primer lugar, tenemos que decirle a MySQL que tiene que crear su propia base de datos para la estructura del directorio donde se almacenará la información. Puedes hacer esto escribiendo:
sudo mysql_install_db
Después, debemos ejecutar un simple script de seguridad que elimine algunas configuraciones peligrosas por defecto y bloquear el acceso a nuestro sistema de base de datos un poco. Inicia el script interactivo ejecutando:
sudo mysql_secure_installation
Te pedirá que introduzcas la contraseña que estableciste para la cuenta root de MySQL. A continuación, te preguntará si deseas cambiar la contraseña. Si eres feliz con tu contraseña actual, escribe "n" de "no" en el indicador.
Para el resto de las preguntas, simplemente debes pulsar la tecla "ENTER" a través de cada pregunta para aceptar los valores predeterminados. Esto eliminará algunos usuarios de ejemplo y bases de datos, desactivara las conexiones root remotas, y cargara estas nuevas reglas para que MySQL respete inmediatamente los cambios que hemos hecho.
En este punto, el sistema de base de datos ya está configurado y podemos seguir adelante.

Paso Tres - Instalar PHP

PHP es el componente de nuestra configuración que procesará código para mostrar contenido dinámico. Puede ejecutar secuencias de comandos, conectarse a nuestras bases de datos MySQL para obtener información, y entregar el contenido procesado a nuestro servidor web para mostrarlo.
Una vez más podemos aprovechar el sistema apt para instalar nuestros componentes. Vamos a incluir algunos paquetes de ayuda, así:
sudo apt-get install libapache2-mod-php5 php5 php5-mcrypt
Esto deberá instalar PHP sin ningún problema. Vamos a probar esto en un momento.
En la mayoría de los casos, vamos a querer modificar la forma en que Apache sirve archivos cuando se solicita un directorio. Actualmente, si un usuario solicita un directorio del servidor, Apache buscará primero un archivo llamado index.html Nosotros queremos decirle a nuestro servidor web que elija los archivos PHP de preferencia, por lo que vamos a hacer Apache busque un archivo index.php primero.
Para ello, escribe este comando para abrir el archivo dir.conf en un editor de texto con privilegios de root:
sudo nano /etc/apache2/mods-enabled/dir.conf
Se verá de forma similar a esto:
<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Queremos mover el índice del archivo PHP destacandolo a la primera posición después de la especificación del DirectoryIndex, así:
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Cuando hayas terminado, guarda y cierre el archivo presionando "CTRL-X". Vas a tener que confirmar el guardado escribiendo "Y" y luego pulsando "ENTER" para confirmar la ubicación de almacenamiento de archivos.
Después de esto, tenemos que reiniciar el servidor web Apache para que nuestros cambios sean reconocidos. Puedes hacerlo hacerlo ejecutando esto:
sudo service apache2 restart

Instalación de módulos PHP

Para mejorar la funcionalidad de PHP, podemos instalar opcionalmente algunos módulos adicionales.
Para ver las opciones disponibles para los módulos de PHP y bibliotecas, puedes ejecutar esto en tu sistema:
apt-cache search php5-
Los resultados son todos los componentes opcionales que se pueden instalar. Describiremos brevemente cada uno:
php5-cgi - Del lado del servidor, lenguaje de scripting embebido en HTML (CGI binario)
php5-cli - Intérprete de línea de comandos para el lenguaje de scripting PHP5
php5-common - Archivos comunes para paquetes construidos desde fuente PHP5
php5-curl - Módulo CURL para php5
php5-dbg - Símbolos de depuración para PHP5 
php5-dev - Archivos para el módulo de desarrollo PHP5
php5-gd - Módulo GD para PHP5
. . .
Para obtener más información sobre lo que hace cada módulo, puedes buscar en Internet o ver en la descripción larga del paquete escribiendo:
apt-cache show nombre_del_paquete
Habrá una gran muestra de infomación, con un campo llamado Description-en el cual tendrá una explicación más larga de la funcionalidad que el módulo ofrece.
Por ejemplo, para averiguar lo que hace el módulo php5-cli podríamos escribir lo siguiente:
apt-cache show php5-cli
Junto con una gran cantidad información, podrás ver encontrará algo como esto:
. . .
SHA256: 91cfdbda65df65c9a4a5bd3478d6e7d3e92c53efcddf3436bbe9bbe27eca409d
Description-en: command-line interpreter for the php5 scripting language
 This package provides the /usr/bin/php5 command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 The following extensions are built in: bcmath bz2 calendar Core ctype date
 dba dom ereg exif fileinfo filter ftp gettext hash iconv libxml mbstring
 mhash openssl pcntl pcre Phar posix Reflection session shmop SimpleXML soap
 sockets SPL standard sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader
 xmlwriter zip zlib.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
Description-md5: f8450d3b28653dcf1a4615f3b1d4e347
Homepage: http://www.php.net/
. . .
Si, después de investigar, decides que quieres instalar un paquete, puedes hacerlo utilizando el comandoapt-get install como lo hemos hecho previamente con otro software.
Si decidimos que php5-cli es algo que necesitamos, podríamos ejecutar:
sudo apt-get install php5-cli
Si deseas instalar más de un módulo, puedes hacerlo listandolos uno por uno, separados por un espacio, después del comando apt-get install, algo así:
sudo apt-get install paquete1 paquete2 ...
En este punto, el LAMP está instalado y configurado. Sin embargo, todavía debemos probar nuestro PHP.

Paso Cuatro - Prueba del Procesador PHP en el Servidor Web

Con el fin de probar que nuestro sistema se ha configurado correctamente para PHP, podemos crear un script PHP muy básico.
Vamos a llamar a este script info.php. Para que Apache pueda buscar el archivo y lo trabaje correctamente, se debe guardar en un directorio muy específico, al cual se le conoce como "raíz".
En Ubuntu 14.04, este directorio se encuentra en /var/www/html/. Podemos crear el archivo en esa ubicación ejecutando:
sudo nano /var/www/html/info.php
Esto abrirá un archivo en blanco. Queremos poner el texto siguiente, que es el código PHP válido, dentro del archivo:
<? Php
phpinfo ();
?>
Cuando hayas terminado, guarda y cierra el archivo.
Ahora podemos probar si nuestro servidor web puede visualizar correctamente el contenido generado por un script PHP. Para probar esto, sólo tenemos que visitar esta página en nuestro navegador web. De nuevo necesitarás la dirección IP pública del servidor.
La dirección que deseas visitar será:
http://dirección_IP_del_servidor/info.php
La página que verás debe ser algo como esto:
Ubuntu 14.04 default PHP info
Esta página básicamente te da información sobre el servidor desde la perspectiva de PHP. Es útil para la depuración y para asegurarse de que los ajustes se están aplicando correctamente.
Si esto fue un éxito, entonces su PHP está funcionando como se esperaba.
Es posible que desees eliminar este archivo después de esta prueba, ya que en realidad podría dar información sobre el servidor a los usuarios no autorizados. Para ello, puede escribir lo siguiente:
sudo rm /var/www/html/info.php
Siempre se puede volver a crear esta página si necesita acceder a la información nuevamente.

3 Maneras de instalar SSL en Apache

Forma 1

Acerca de HTTPS.

HTTPS es la versión segura del protocolo HTTP, inventada en 1996 por Netscape Communications Corporation. Es es un protocolo dependiente de HTTP, consistiendo de una combinación de éste con un mecanismo de transporte SSL oTLS, garantizando así una protección razonable durante la comunicación cliente-servidor. Es ampliamente utilizado en la red mundial (WWW o World Wide Web) para comunicaciones como transacciones bancarias y pago de bienes y servicios.
El servicio utiliza el puerto 443 por TCP para realizar las comunicaciones (la comunicación normal para HTTP utiliza el 80 por TCP). El esquema URI (Uniform Resource Identifier o Identificador Uniforme de Recursos) es, comparando sintaxis, idéntico al de HTTP (http:), utilizándose como «https:» seguido del subconjunto denominado URL (UniformResource Locator o Localizador Uniforme de Recursos). Ejemplo: https://www.empresa.com.mx/

Acerca de RSA.

RSA, acrónimo de los apellidos de sus autores, Ron Rivest, Adi Shamir y Len Adleman, es un algoritmo para el ciframiento de claves públicas que fue publicado en 1977, patentado en EE.UU. en 1983 por el el Instituto Tecnológico de Michigan (MIT). RSA es utilizado ampliamente en todo el mundo para los protocolos destinados para el comercio electrónico.

Acerca de Triple DES.

Triple DES o TDES, es un algoritmo que realiza un triple cifrado DES, desarrollado por IBM en 1978. Su origen tuvo como finalidad el agrandar la longitud de una clave sin necesidad de cambiar el algoritmo de ciframiento, lo cual lo hace más seguro que el algoritmo DES, obligando a un atacante el tener que triplicar el número de operaciones para poder hacer daño. A pesar de que actualmente está siendo reemplazado por el algoritmo AES (Advanced EncryptionStandard, también conocido como Rijndael), sigue siendo estándar para las tarjetas de crédito y operaciones de comercio electrónico.

Acerca de X.509.

X.509 es un estándar ITU-T (estandarización de Telecomunicaciones de la International Telecommunication Union) para infraestructura de claves públicas (PKI o Public Key Infrastructure). Entre otras cosas, establece los estándares para certificados de claves públicas y un algoritmo para validación de ruta de certificación. Este último se encarga de verificar que la ruta de un certificado sea válida bajo una infraestructura de clave pública determinada. Es decir, desde el certificado inicial, pasando por certificados intermedios, hasta el certificado de confianza emitido por una Autoridad Certificadora (CA o Certification Authority).
URL: http://es.wikipedia.org/wiki/X.509

Acerca de OpenSSL.

OpenSSL es una implementación libre, de código abierto, de los protocolos SSL (Secure Sockets Layer o Nivel de Zócalo Seguro) y TLS (Transport Layer Security o Seguridad para Nivel de Transporte). Está basado sobre el extinto proyecto SSLeay, iniciado por Eric Young y Tim Hudson, hasta que éstos comenzaron a trabajar para la división de seguridad de EMC Corporation.

Acerca de mod_ssl.

Mod_ssl es un módulo para el servidor HTTP Apache, el cual provee soporte para SSL versiones 2 y 3 y TLS versión 1. Es una contribución de Ralf S. Engeschall, derivado del trabajo de Ben Laurie.

Requisitos.

Es necesario disponer de una dirección IP pública para cada sitio de red virtual que se quiera configurar con soporteSSL/TLS. Debido a la naturaleza de los protocolos SSL y TLS, es imposible utilizar múltiples anfitriones virtuales con soporte SSL/TLS utilizando una misma dirección IP. Cada certificado utilizado requerirá una dirección IP independiente en el anfitrión virtual.
El paquete mod_ssl instala el archivo /etc/httpd/conf.d/ssl.conf, mismo que es innecesario modificar si se utilizan archivos de inclusión, con extensión *.conf, dentro del directorio /etc/httpd/conf.d/. Ésto se recomienda a fin de preservar la configuración predeterminada y poder disponer de ésta, brindando un punto de retorno en el caso de que alguna configuración diese problemas, limitándose solo a modificar las opciones del archivo ssl.conf para configurar las rutas del certificado y firma digital.

Modificaciones necesarias en el muro cortafuegos.

Es necesario abrir —además del puerto 80— el puerto 443 por TCP (https). Configure el muro cortafuegos como se describe en el documento titulado «Configuración básica de Apache»

Equipamiento lógico necesario.

Instalación a través de yum.

Ejecute los siguiente si se utiliza de CentOS o bien Red Hat™ Enterprise Linux:
yum -y install mod_ssl

Procedimientos.

Generando firma digital y certificado.

Acceda al sistema como root.
Durante los siguiente procedimientos se utilizará `hostname` para calcular automáticamente el nombre de anfitrión del servidor. Ejecute lo siguiente para verificar cuál es el nombre de anfitrión del sistema y lo que será utilizado automáticamente en el nombre de los archivos de certificados y firmas digitales.
De existir, elimine los archivos de certificados y firmas digitales previos.
rm -f /etc/pki/tls/*/`hostname`.*
Se debe crear una clave con algoritmo RSA de 4096 octetos y estructura x509, la cual se cifra utilizado Triple DES(Data Encryption Standard), almacenado en formato PEM de modo que sea interpretable como texto ASCII. se solicitará una contraseña para asignar a la firma digital, por lo que se recomienda utilizar una muy buena contraseña, la cual, mientras más complicada y difícil sea, mejor.
openssl genrsa -des3 \
    -out /etc/pki/tls/private/`hostname`.key 4096
Si se utiliza el archivo *.key para la configuración del anfitrión virtual, se requerirá de interacción del administrador cada vez que se tenga que iniciar o reiniciar el servicio httpd, ingresando la contraseña de la firma digital. Este es el procedimiento más seguro, sin embargo, debido a que requiere tener que ingresar una contraseña cada vez que se inicie el servicio httpd, resulta más conveniente generar una firma digital RSA, la cual permita iniciar normalmente el servicio y sin interacción alguna.
openssl rsa \
    -in /etc/pki/tls/private/`hostname`.key \
    -out /etc/pki/tls/private/`hostname`.pem
El archivo *.pem será el que se especifique más adelante como valor de la opción SSLCertificateKeyFile en la configuración de Apache.
Ejecute lo siguiente para crear el archivo CSR (Certificate Signing Request):
openssl req -sha256 -new \
    -key /etc/pki/tls/private/`hostname`.key \
    -out /etc/pki/tls/certs/`hostname`.csr
Lo anterior solicitará se ingresen varios datos:
  • Código de dos letras para el país.
  • Estado o provincia.
  • Ciudad.
  • Nombre de la empresa o razón social.
  • Unidad o sección.
  • Nombre del anfitrión. Debe ser el nombre con el que se accederá hacia el servidor y dicho nombre deberá estar resuelto en un DNS.
  • Dirección de correo electrónico válida del administrador del sistema.
  • De manera opcional se puede añadir otra contraseña y nuevamente el nombre de la empresa. Poco recomendado, a menos que quiera ingresar ésta cada vez que se inicie o reinicie el servicio httpd.
La salida será similar a la siguiente:
You are about to be asked to enter information that will be
incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or
a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:MX
State or Province Name (full name) [Berkshire]:Distrito Federal
Locality Name (eg, city) [Newbury]:Mexico
Organization Name (eg, company) [My Company Ltd]:Empresa, S.A. de C.V.
Organizational Unit Name (eg, section) []:Direccion Comercial
Common Name (eg, your name or your server's hostname) []:www.empresa.com.mx
Email Address []:alguien@algo.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
El archivo de solicitud CSR resultante es el que se entrega al Autoridad de Certificación o Registration Authority —como Verisign, Comodo, Geotrust, etc.— que a su vez entrega de vuelta un archivo de certificado firmado.
Ejecute lo siguiente para crear un certificado auto-firmado con estructura X.509 en el que se establece una validez por 1825 días (5 años):
openssl x509 -sha256 -req -days 1825 \
    -in /etc/pki/tls/certs/`hostname`.csr \
    -signkey /etc/pki/tls/private/`hostname`.key \
    -out /etc/pki/tls/certs/`hostname`.crt
Cambie los permisos de todos los archivos creados a sólo lectura para root.
chmod 400 /etc/pki/tls/*/`hostname`.*

Configuración simple de Apache para un solo dominio.

Confirme cuál es el nombre de anfitrión del sistema:
hostname
Edite el archivo /etc/httpd/conf.d/ssl.conf:
vim /etc/httpd/conf.d/ssl.conf
Localice lo siguiente:
#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
Cambie localhost.crt y localhost.key por www.empresa.com.mx.crt y www.empresa.com.mx.pem, dondewww.empresa.com.mx es sólo un ejemplo hipotético y corresponde al nombre de anfitrión del servidor:
#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
SSLCertificateFile /etc/pki/tls/certs/www.empresa.com.mx.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /etc/pki/tls/private/www.empresa.com.mx.pem
Localice lo siguiente:
#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2
Notará que está deshabilitado el protocolo SSLv2. Por razones de seguridad es buena idea deshabilitar también el soporte para SSLv3. Es un protocolo muy inseguro y susceptible a la tristemente célebre vulnerabilidad conocida comoPOODLE. Si atacantes explotan exitosamente esta vulnerabilidad sólo necesitan hacer alrededor de 256 solicitudes SSL 3.0 para revelar datos de las conexiones cifradas. Lo más inteligente que puede hacer cualquier administrador de sistemas es deshabilitar el soporte para SSLv3.
#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol all -SSLv2 -SSLv3
Reinicie el servicio para que surtan efecto los cambios:
service httpd restart
Lo anterior deberá de proceder sin solicitar la contraseña de la firma digital. Si se solicita una contraseña, significa que estableció www.empresa.com.mx.key como valor de la opción SSLCertificateKeyFile en la configuración de Apache.

Configuración de Apache para múltiples dominios.

Omita el procedimiento anterior.
Es importante resaltar que cada dominio deberá contar con su propia dirección IP, pues el protocolo HTTPS impedirá utilizar más de un certificado por dirección IP.
El primer paso consiste en crear la estructura de directorios para el anfitrión virtual.
mkdir -p /var/www/dominio/{cgi-bin,html,logs,etc}
De todos directorios creados, sólo /var/www/dominio/html/var/www/dominio/etc y /var/www/dominio/cgi-binpueden pertenecer a un usuario sin privilegios, quien administrará este anfitrión virtual.
Crear el archivo /etc/httpd/conf.d/dominio.conf:
vim /etc/httpd/conf.d/dominio.conf
Adaptar la siguiente plantilla como contenido de este archivo, donde a.b.c.d corresponde a una dirección IP y dominiocorresponde al nombre de dominio a configurar para el anfitrión virtual:
### dominio ###
NameVirtualHost a.b.c.d:80
 <VirtualHost a.b.c.d:80>
  ServerAdmin webmaster@dominio
  DocumentRoot /var/www/dominio/html
  ServerName www.dominio
  ServerAlias dominio
  Redirect 301 / https://www.dominio/
  CustomLog logs/dominio-access_log combined
  Errorlog logs/dominio-error_log
 </VirtualHost>

NameVirtualHost a.b.c.d:443
 <VirtualHost a.b.c.d:443>
  ServerAdmin webmaster@dominio
  DocumentRoot /var/www/dominio/html
  ServerName www.dominio
  ScriptAlias /cgi-bin/ /var/www/dominio/cgi-bin/
  <Directory "/var/www/dominio/cgi-bin">
   SSLOptions +StdEnvVars
  </Directory>
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLCertificateFile /etc/pki/tls/certs/dominio.crt
  SSLCertificateKeyFile /etc/pki/tls/private/dominio.pem
  SetEnvIf User-Agent ".*MSIE.*" \
   nokeepalive ssl-unclean-shutdown \
   downgrade-1.0 force-response-1.0
  CustomLog logs/dominio-ssl_request_log \
   "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
  Errorlog logs/dominio-ssl_error_log
  TransferLog logs/dominio-ssl_access_log
  LogLevel warn
 </VirtualHost>
A fin de que surtan efecto los cambios, es necesario reiniciar el servicio httpd.
service httpd restart
Lo anterior deberá de proceder sin solicitar la contraseña de la firma digital (la que asignó cuando se creodominio.key). En caso contrario, significa que estableció dominio.key como valor de la opción SSLCertificateKeyFileen la configuración de Apache.

Comprobación.

Acceda con cualquier navegador HTTP hacia https://www.dominio/ a fin de verificar que todo esté trabajando correctamente. Tras aceptar el certificado, en el caso de que éste no haya sido firmado por un RA, deberá poderse observar un signo en la barra de estado del navegador, el cual indica que se trata de una conexión segura.



Forma 2


INSTALACIÓN SSL EN…APACHE OPENSSL

Para instalar un certificado SSL en su servidor debe antes generar un CSR o petición de firma (PASO 1) con el que generaremos su certificado que posteriormente instalará en su dominio, ip o intranet (PASO 2).

PASO 1: GENERAR UN CSR O PETICIÓN DE FIRMA.

Para generar una llave privada y la petición de firma del certificado SSL (CSR), debe introducir el siguiente comando:
openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr
Esta orden crea dos archivos:
1) El archivo "myserver.key" contiene su llave privada del que le recomendamos realizar una copia de seguridad para poder instalar el mismo certificado en caso de migración o perdida de datos de su servidor.
2) El archivo "server.csr", es el CSR, para el cual tendremos que introducir los datos que queremos que aparezcan en el certificado, junto con el "Common Name", valor de importancia ya que será en nombre con el que se expedirá el certificado.
Puede que algunos campos habrá un valor predefinido. Si introduce '.' el campo se dejará en blanco.
—–
Country Name (2 letter code) [ ]: (Código del país – 2 letras)
State or Province Name [ ]: (Provincia)
Locality Name [ ]: (Ciudad)
Organization Name [ ]: (Organización)
Organizational Unit Name [ ]: (Departamento)
Common Name* [ ]: (dominio, subdominio ó ip para el certificado)
Email Address [ ]: (dirección de e-mail)
después le pedirá los siguientes datos extras que se enviarán con su petición del certificado
A challenge password [ ]: (Contraseña)
An optional company name [ ]: (Nombre opcional de la organización)
—–
* Common Name (CN). Nombre de dominio para el que se va a solicitar el certificado. Asegúrese de que todo es correcto y que contiene un dominio principal o subdominio (ejm: www.hispassl.com, seguridad.hispassl.com,…).
Los campos destinados al emailoptional company name y challenge password pueden dejarse en blanco.
Su CSR ya ha sido generado. Copie y guarde todo su contenido comprendido desde:
—–BEGIN CERTIFICATE REQUEST—–
                  ….hasta
—–END CERTIFICATE REQUEST—–
Necesitará utilizarlo durante el proceso de compra de su certificado. Si ya posee el CSR puede pasar a comprar su certificado haciendo click aqui . 

PASO 2: INSTALACIÓN SSL

Primero instalaremos los certificados intermedio y raiz, y posteriormente el certificado propio:
1) Instalación del certificado intermedio:
Deberá instalar un certificado intermedio de la Autoridad Certificadora (CA) para garantizar sesiones de 256 bits con los navegadores. Este certificado lo recibirá por e-mail junto con su certificado propio como gs_intermediate_ca.crt
Deberá realizar los siguientes pasos:
  1. Guarde su archivo en apache/conf/ssl/
  2. PARE el servidor apache.
  3. Localice el archivo httpd.conf y ábralo con un editor de texto.
  4. Localice la directiva "SSLCaCertificateFile" en su httpd.conf y elimine el simbolo # de la linea.
  5. Modifique el directorio del final de la linea haciendo referencia al certificado gs_intermediate_ca.crt recién guardado. Por ejemplo: SSLCaCertificateFile /usr/local/apache/conf/ssl/gs_intermediate_ca.crt
  6. Finalmente reinicie Apache.
2) Instalación del certificado propio
Copie su certificado en un directorio seguro que utilice exclusivamente para este fin.
Por defecto: /usr/local/apache/conf/ssl.crt/ o /etc/httpd/conf/ssl.crt/.
Abra el archivo httpd.conf file en una shell con edición de texto.
Localice el SSL Host Virtual asociado su certificado. Verifique que tiene las dos siguientes directivas en su host virtual, en caso contrario debrá añadirlas manualmente:
SSLCertificateFile /usr/local/apache/conf/ssl.crt/nombrededominio_ext.crt (o servidor.crt)
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/nombrededominio_ext (o servidor.key)
Advertencia: Algunas versiones de Apache almacenan la información de los alojamientos virtuales en el archivo ssl.conf. Si su httpd.conf no contiene información sobre estos necesitará localizar el archivo ssl.conf y editar las lineas indicadas.
Guarde los cambios y salga del editor de consola.
Reinicie su servidor apache.

Forma 3

Instalación del Certificado SSL - Apache OpenSSL
Haga la Instalación de su Certificado SSL y los Certificados de Intermedio en Apache

Propósito de este artículo: este artículo ofrece un tutorial para instalar su certificado en Apache (OpenSSL) para las versiones 1 y 2. Si este artículo no está relacionado con lo que usted está buscando, utilice el campo de búsqueda arriba para buscar su solución.
Para Apache v1.X
1. Descargue el/los certificado(s) intermedio(s) pertinente(s) y guárdelo(s) en un editor de texto con el formato de archivo
intermedio .pem:

• DomainSSL: Validación de dominio (certificado intermedio)

• OrganizationSSL: Validación de organización (certificado intermedio)

• ExtendedSSL: Validación ampliada (certificado intermedio y cruzado)
2. Copie su certificado de SSL desde el correo electrónico de entrega (o descárguelo desde su cuenta de GlobalSign (GCC) y péguelo en un editor de texto. Guarde el archivo como nombrededominio.pem.
3. Copie los archivos nombrededominio.pem y certificadointermedio.pem en la carpeta en la cual desea guardar su certificados.
4. Abra el archivo httpd.conf (en algunas instalaciones la sección de SSL se guarda en un archivo independiente que lleva por nombre ssl.conf) utilizando su editor de texto, y localice la sección de host virtual (virtualhost) del sitio que desea proteger mediante el certificado SSL.

La sección de su host virtual deberá contener los siguientes elementos:

• Archivo de cadena de certificación (SSLCertificateChainFile): debe corresponderse con los certificados raíz intermedios pertinentes.

• Archivo de certificado SSL (SSLCertificateFile): debe corresponderse con el certificado final (nombrededominio.pem o nombrededominio.crt)

• Archivo de clave del certificado SSL (SSLCertificateKeyFile): debe corresponderse con el archivo de clave privada asociado con su certificado.
5. Guarde las modificaciones y salga del programa.
6. Reinicie Apache.
 
Para Apache v2.X
1. Descargue el certificado raíz de GlobalSign pertinente y guárdelo en un editor de texto con el nombre gs_root.pem.

• DomainSSL y OrganisationSSL: GlobalSign Root CA

• ExtendedSSL: GlobalSign Root CA
2. Descargue el/los certificado(s) intermedio(s) pertinente(s) y guárdelo(s) en un editor de texto con el formato de archivo intermedio .pem:

• DomainSSL: Validación de dominio (certificado intermedio)

• OrganizationSSL: Validación de organización (certificado intermedio)

• ExtendedSSL: Validación ampliada (certificado intermedio y cruzado)
3. Copie su certificado desde el correo electrónico de entrega (o descárguelo desde su cuenta de GlobalSign [GCC]) y péguelo en un editor de texto. Guarde el archivo como nombrededominio.pem.
4. Copie los archivos nombrededominio.pem y certificadointermedio.pem en la carpeta en la cual desea guardar sus certificados.
5. Abra el archivo httpd.conf (en algunas instalaciones la sección de SSL se guarda en un archivo independiente que lleva por nombre ssl.conf) utilizando su editor de texto, y localice la sección de host virtual (virtualhost) del sitio que desea proteger mediante el certificado SSL.

La sección de su host virtual deberá contener los siguientes elementos:

• Archivo de certificado SSL CA (SSLCertificateChainFile): debe corresponderse con el certificado raíz de GlobalSign pertinente.

• Archivo de cadena de certificación (SSLCertificateChainFile): debe corresponderse con los certificados raíz intermedios pertinentes que ha creado durante el paso 1 anterior.

• Archivo de certificado SSL (SSLCertificateFile): debe corresponderse con el certificado final (nombrededominio.pem o nombrededominio.crt)

• Archivo de clave del certificado SSL (SSLCertificateKeyFile): debe corresponderse con el archivo de clave privada asociado con su certificado.
6. Guarde las modificaciones y salga del programa.
7. Reinicie Apache