Para verificar la versión de tu apache, entramos a la consola y escribimos:
apache2 -v
El paquete que se necesitara para SSL para trabajar tendrá que ser instalado. Se supone que el servidor web ya está instalado, configurado y funcionando. Si no, hay muchas guías en Internet que explican eso.
Escriba en consola el siguiente comando para instalar openssl:
sudo aptitude install openssl
Crear un certificado de solicitud de firma:
El primer paso es generar una clave. Para generar la solicitud de firma de certificado (CSR), cree una clave (por ejemplo, server.key).
Ejecute el siguiente comando en una terminal para crear la clave:
openssl genrsa -des3 -out server.key 4096
Ahora tenemos que escribir una frase clave para nuestro server.key. Trata que sea una mezcla entre números, caracteres especiales y letras. Es muy recomendable esta forma.
Luego te va a volver a pedir la frase clave y volve a escribir la misma.
Escriba en la consola:
openssl genrsa -out server.key 4096
Aparecerá esto:
Generating RSA private key, 4096 bit long modulus
......................................................................................................................................................++
........................................++
e is 65537 (0x10001)
Asegúrese de que el archivo server.key sólo es legible por el root y escriba en la consola:
sudo chmod 400 server.key
Para verificar el nombre DNS o la dirección IP de nuestro servidor, nos dirigimos:
sudo nano /etc/apache2/httpd.conf
En caso si no hay nada escrito escribimos:
ServerName ProyectosBeta
OBS:
Para este ejemplo configuramos a nuestro ProyectosBeta, pero podes hacerlo para cualquier dominio. Este nombre nos sirve para completar el Common Name que nos pedirá en el siguiente paso.
Después que se crea la clave, la solicitud de firma de certificado (CSR) se crea con la llave y ejecute el siguiente comando en la consola:
openssl req -new -key server.key -out server.csr
Se requerirá la siguiente información y lo completamos:
Nombre País (Country Name): PY
Estado o Provincia (State or Province Name): Asuncion
Locality Name: Asuncion
Nombre de la organización (Organization Name): ProyectosBeta
Nombre de la Unidad de Organización (Organizational Unit Name): ProyectosBeta
Nombre común (debe coincidir con el nombre de dominio por ejemplo ProyectosBeta) (Common Name): ProyectosBeta
Dirección de correo electrónico (Email Address): josego85@gmail.com
Desafío Contraseña (Challenge Password)(vacío nomas):
Nombre de la empresa (Company Name) (vacío nomas):
Si el Common Name no coincide con el nombre DNS o la dirección IP del servidor web, el cliente recibirá una "falta de coincidencia de dominio" de error. Además, los valores predeterminados para las instrucciones se almacenan en /etc/ssl/openssl.cnf.
Creación y obtención de un Certificado
Entramos a la consola y escribimos:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Aparecerá esto:
Signature ok
subject=/C=PY/ST=Asuncion/L=Asuncion/O=ProyectosBeta/OU=ProyectosBeta/CN=ProyectosBeta/emailAddress=josego85@gmail.com
Getting Private key
Una vez que este todo correcto, el certificado se creará y se almacena en el archivo server.crt.
Instalando los archivos de certificado y la clave
Para instalar el certificado y los archivos de clave, escriba en la consola:
sudo mkdir /etc/apache2/ssl/
sudo cp server.crt /etc/apache2/ssl/
sudo cp server.key /etc/apache2/ssl/
Luego borramos las claves que creamos en el directorio actual.
Ojo: del directorio actual y no en el que acabamos de crear. (/etc/apache2/ssl/).
Escribimos en la consola:
sudo rm server.crt server.csr server.key
Activar SSL en Apache
Para habilitar el módulo SSL en Apache, escriba en consola:
sudo a2enmod ssl
Y aparecerá esto en la pantalla:
Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run '/etc/init.d/apache2 restart' to activate new configuration!
Habilitar máquinas virtuales SSL en el archivo /etc/apache2/ports.conf y escribimos en consola:
sudo nano /etc/apache2/ports.conf
Agregamos dentro de
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Creación de un host virtual SSL basada en el nombre
Crear un nombre de un host virtual SSL en /etc/apache2/sites-available/.
sudo nano /etc/apache2/sites-available/ProyectosBeta
Seguramente no aparecera nada y escribimos lo siguiente:
<VirtualHost *:443>
ServerAdmin josego85@gmail.com
ServerName ProyectosBeta
DocumentRoot /var/www/
<Directory /var/www/pruebaSSL>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/ProyectosBeta_ssl.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/ProyectosBeta_ssl-access.log combined
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
</VirtualHost>
Ojo:
Tenemos que tener creada la carpeta pruebaSSL y dentro de ahí un index.php (de prueba).
Esto es para probar nuestro https.
Habilitar el sitio dentro de Apache y escribir en la consola:
sudo a2ensite ProyectosBeta
Aparecerá lo siguiente por pantalla:
Enabling site ProyectosBeta.
Run '/etc/init.d/apache2 reload' to activate new configuration!
Para activar los cambios reiniciamos Apache y escribimos en la consola:
sudo service apache2 restart
Para probar el SSL en nuestro sitio escribimos en el navegador:
https://localhost/pruebaSSL
Te va a avisar que no es una pagina de confianza, pero como nosotros hicimos el certificado sabemos que lo es. Lo único que debemos de hace es presionar el botón Agregar excepción.
Y esto es todo. XD
Imagen: El Blog de Alvaro Garcia Solano
Fuente: Joe Fallon
7 comentarios:
muy bueno el aporte men.!!
Tremendo aporte... Se te agradece de antemano...
Muchas Gracias por el aporte, me ha sido muy útil.
buenas, me sirvio el post pero donde debo de crear el directorio pruebaSSL????
@acurax: generalmente por defecto en ubuntu el directorio de tu server(apache) donde están localizadas tus sitios web se encuentran en /var/www. Dentro de esa dirección deberías de crear la carpeta pruebaSSL. La dirección sería /var/www/pruebaSSL
Hay un error en el codigo, hay un espacio de mas en la linea < IfModule mod_ssl.c> cuando configuran los puertos!!!
@Anonimo: muchas gracias por avisar. Ahora ya esta corregido. XD
Publicar un comentario
Expresate y se crítico en tu vida. XD