Wordpress Facebook Twitter Technorati RSS Vimeo Google Yahoo
Matrosphera


Instalar Apache2 con SSL en Ubuntu

SSL es un sistema que permite que la información se transmita de forma encriptada a través de Internet, muy empleado en el comercio electrónico, es el candado que observamos en la barra de direcciones de algunas webs.

Con este tutorial se pretende mostrar la forma de configurarlo en un servidor Apache2, si bien puede haber cosas que no funcionen, todo depende de la distribución y la versión de Linux que se use. Este tutorial fue realizado usando Ubuntu 7.10.

Para empezar, sino tenemos instalado Apache lo instalamos:


sudo aptitude install apache2


A continuación habilitaremos los módulos ssl y rewrite:


a2enmod ssl


a2enmod rewrite


Generamos el certificado:


apache2-ssl-certificate


Si nos aparece un mensaje de error diciendo que el comando no existe haremos lo siguiente:


sudo aptitude install ssl-cert


openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem


Rellenamos los campos que nos solicita.


Modificamos el fichero /etc/apache2/sites-enabled/ssl:


sudo nano /etc/apache2/sites-enabled/ssl


Añadimos:


SSLEngine On


SSLCertificateFile /etc/apache2/apache.pem


Si hemos creado una carpeta donde alojaremos las webs añadiremos en todas las líneas donde aparezca /var/www el nombre de la carpeta, así, si creamos una carpeta llamada websegura quedará de ésta forma:


/var/www/websegura


Modificamos también el fichero /etc/apache2/sites-enabled/000-default(o solo default, según versión):
sudo nano /etc/apache2/sites-enabled/000-default


y añadimos:


Debajo de NameVirtualHost *:80–>
NameVirtualHost *:443

Debajo de DocumentRoot /var/www/–>
RewriteEngine on

RewriteLog /var/log/apache2/https_rewrite.log

RewriteLogLevel 1

RewriteCond %{SERVER_PORT} !^443$

RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]

Al final del documento–>

< VirtualHost *:443 >

DocumentRoot /var/www

ErrorLog /var/log/apache2/error.log

CustomLog /var/log/apache2/access.log combined

SSLEngine on

SSLCertificateFile /etc/apache2/apache.pem

< /VirtualHost >




Abrimos el fichero /etc/apache2/ports.conf y comprobamos que exista lo siguiente, sino lo añadimos:


Listen 80

Listen 443



Abrimos el fichero /etc/apache2/apache2.conf y añadimos al final:


ServerName 127.0.0.1


Finalmente reiniciamos el demonio de Apache:


sudo /etc/init.d/apache2 force-reload



Posibles problemas que pueden surgir en la configuración:

  • Comprueba que los ficheros de tu web tengan como propietario al usuario www-data y no a root, para ello ve hasta el directorio /var/www y con ls -l observa quien es el propietario de los ficheros, para cambiarlo: sudo chown nombredeusuario nombredefichero.
  • Revisa los permisos, en concreto del fichero /etc/apache2/apache.pem, cambia los permisos de este fichero o de cualquier otro con chmod. Su sintaxis es chmod numero fichero. Ejemplo: sudo chmod 755 /etc/apache2/apache.pem.
  • Si no tuvieras el paquete openssl instalado instálalo: sudo aptitude install openssl
  • Después de cada cambio importante reinicia el demonio de Apache.





Para ver el certificado SSL en funcionamiento escribiremos en el navegador http://localhost/, automáticamente nos redirigirá a https…

ssl

19 comentarios
Compártelo:
  • BarraPunto
  • email
  • Facebook
  • Meneame
  • MySpace
  • Twitter
  • del.icio.us
  • Digg
  • Reddit
  • Slashdot
14 votos Vota!!

19 Comentarios

  1. JavierNo Gravatar Marzo 4th, 2008 8:20 pm

    Muy buén artículo. Claro y conciso.
    Gracias

  2. adminNo Gravatar Marzo 4th, 2008 11:05 pm

    Gracias por tu opinión, Javier. Pronto publicaré nuevos tutoriales sobre Linux.

  3. rubenNo Gravatar Noviembre 28th, 2008 2:04 pm

    Hola tenia una duda sobre el tutorial que as hecho si quiero configurarlo para que responda a las peticiones del nombre https://www.apachessl.com. donde se pondria esa dirección.
    Gracias

  4. adminNo Gravatar Noviembre 29th, 2008 2:35 am

    Ruben,intuyo que quieres que tu servidor se pueda ver desde fuera de tu red, eso es cosa de DNS. Échale un vistazo a ésta página por si te pudiese servir:
    http://www.no-ip.com

  5. ruben rivasNo Gravatar Enero 10th, 2009 2:50 am

    le doy las gracias a todos ya que con esta herramienta se puede lograr muchos objetivos soy nuevo en linux me esta costando un poco realice todos sus procedimiento pero todavía ten problema,el error que arroja ruben@ruben-laptop:~$ sudo /etc/init.d/apache2 force-reload
    [sudo] password for ruben:
    apache2: Syntax error on line 297 of /etc/apache2/apache2.conf: Include takes one argument, Name of the config file to be included
    …fail!
    no puedo abrir el apache2

  6. adminNo Gravatar Enero 10th, 2009 8:57 pm

    Rubén, el error te lo da al final del fichero, así sin verlo lo más que te puedo decir es que compruebes que al final del fichero no hayas modificado ni borrado nada que no debieras, te copio las últimas lineas de mi fichero apache2.conf que está ahora mismo sin tocar apenas para que compares:

    # Include of directories ignores editors’ and dpkg’s backup files,
    # see README.Debian for details.

    # Include generic snippets of statements
    Include /etc/apache2/conf.d/

    # Include the virtual host configurations:
    Include /etc/apache2/sites-enabled/

  7. crisxNo Gravatar Marzo 18th, 2009 2:14 am

    hola amigo segui tu tutorial y al momento de reiciar el apache me manda FAIL en rojo como puedo ver donde ese error le isntale todo lo q dice al final del tuto y cambie los permisos pero me sigue igual q crees q sea gracias por el tutorial

  8. crisxNo Gravatar Marzo 18th, 2009 3:29 pm

    Hola amigo segui al paso tu tutorial para montar el ssl en mi servidor q lo tengo con ubuntu 8.04 server, hice todo como dices y cheque tmb lo errores q pueden surgir los permisos y se los puse todo se lo active los modulos etc. el error q me sale es q el apache al momento de reiniciar me sale en FAIL en roojo no me bota ningun error.. ahora lei q los errores q salen se alamcenan en error.log y me dices q hay porblemas con el mod_rewrite. tmb como dice tu tuto con el comando apache2-ssl-certificate y lo deje como sigue en la parte de abajo nada mas genere el .pem lei en otro foro de ubunto q ese comando se sustituyo por estas lineas :

    openssl genrsa -des3 -out server.key 1024
    # openssl rsa -in server.key -out server.pem
    # openssl req -new -key server.key -out server.csr
    # openssl x509 -req -days 360 -in server.csr -signkey server.key -out server.crt

    ahora ese es mi error q me sale ya no quise probarle metiendo estas lineas queria mejor preguntarte haver q hize mal, para ver si me puedes ayudar u orientarme

    gracias por la atencion..

  9. adminNo Gravatar Marzo 18th, 2009 5:13 pm

    Hola crisx, en principio con las dos formas que he puesto de crear el certificado no deberías haber tenido problema. Te agradecería que me pegaras aquí el log del apache, puedes hacerlo con este comando:
    cat /var/log/apache2/error.log

  10. crisxNo Gravatar Marzo 18th, 2009 10:29 pm

    gracias amigo por la contestacion bueno reintale de nuevo el server. y esto me sale en el error.log

    [Wed Mar 18 11:30:49 2009] [notice] Apache/2.2.8 (Ubuntu) configured — resuming normal operations

    [Wed Mar 18 11:31:56 2009] [notice] SIGUSR1 received. Doing graceful restart

    [Wed Mar 18 11:31:56 2009] [notice] Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g configured — resuming normal operations

    [Wed Mar 18 12:34:14 2009] [notice] SIGUSR1 received. Doing graceful restart

    [Wed Mar 18 12:34:15 2009] [notice] Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g configured — resuming normal operations

    [Wed Mar 18 12:34:31 2009] [error] [client 192.168.1.74] File does not exist: /var/www/favicon.ico

    [Wed Mar 18 12:34:34 2009] [error] [client 192.168.1.74] File does not exist: /var/www/favicon.ico

    [Wed Mar 18 12:35:14 2009] [notice] Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g configured — resuming normal operations

    [Wed Mar 18 12:41:30 2009] [notice] SIGUSR1 received. Doing graceful restart

    [Wed Mar 18 12:41:30 2009] [notice] Apache/2.2.8 (Ubuntu) mod_ssl/2.2.8 OpenSSL/0.9.8g configured — resuming normal operations

    [Wed Mar 18 13:00:52 2009] [notice] SIGUSR1 received. Doing graceful restart

    [Wed Mar 18 13:00:53 2009] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

    [Wed Mar 18 13:00:53 2009] [warn] RSA server certificate CommonName (CN) `cristian’ does NOT match server name!?

    [Wed Mar 18 13:00:53 2009] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

    [Wed Mar 18 13:00:53 2009] [warn] RSA server certificate CommonName (CN) `cristian’ does NOT match server name!?

    [Wed Mar 18 13:00:53 2009] [error] Illegal attempt to re-initialise SSL for server (theoretically shouldn’t happen!)

    [Wed Mar 18 13:02:15 2009] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

    [Wed Mar 18 13:02:15 2009] [warn] RSA server certificate CommonName (CN) `cristian’ does NOT match server name!?

    [Wed Mar 18 13:02:15 2009] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

    [Wed Mar 18 13:02:15 2009] [warn] RSA server certificate CommonName (CN) `cristian’ does NOT match server name!?

    [Wed Mar 18 13:02:15 2009] [error] Illegal attempt to re-initialise SSL for server (theoretically shouldn’t happen!)

  11. adminNo Gravatar Marzo 20th, 2009 8:04 pm

    [Wed Mar 18 13:02:15 2009] [warn] RSA server certificate CommonName (CN) `cristian’ does NOT match server name!?

    -La razón por la que no te funciona es porque no coincide el nombre del ServerName con el del certificado.Comprueba que en todas las partes de la configuración le des el mismo nombre, en éste caso: cristian.En principio no veo que haya ningún error más de importancia que no te permita arrancarlo con normalidad. Comprueba lo que te he comentado y me cuentas.

  12. crisxNo Gravatar Marzo 20th, 2009 9:09 pm

    ok muchas gracias lo probare. :)

  13. Miguel MoralesNo Gravatar Mayo 20th, 2009 4:01 am

    Hola que tal. Saludos desde Mexico.

    Tengo un problema, al iniciar el servicio de apache me aparece esto:

    mmorales@7426GX:/etc/apache2$ sudo /etc/init.d/apache2 force-reload
    apache2: Syntax error on line 281 of /etc/apache2/apache2.conf: Syntax error on line 53 of /etc/apache2/sites-enabled/000-default: /etc/apache2/sites-enabled/000-default:59: was not closed.\n/etc/apache2/sites-enabled/000-default:53: was not closed.
    …fail!

    E hice exactamente todo lo que ofreces en el post. Solo que tengo una duda, en esta parte te tu post:

    “Debajo de NameVirtualHost *:80–>
    NameVirtualHost *:443
    Debajo de DocumentRoot /var/www/–>
    RewriteEngine on”

    No deberia ser Debajo de ya que en el fichero
    000-default no aparece nada como NameVirtualHost *:80

    Gracias por tu ayuda, te agradecere demaciado si me respondes.

  14. adminNo Gravatar Mayo 21st, 2009 3:09 pm

    Hola Miguel, perdón antes de nada por tardar en contestar. Según dice el error tiene pinta de ser error de sintaxis. Si puedes ponme aquí el código y vemos que puede ser.

  15. jvNo Gravatar Junio 18th, 2009 10:23 am

    Hola un cordial saludo, a mi me sucedió lo que comentó el usuario anterior Miguel Morales, pero en la línea 49, te pego el código para que veas.

    /////Esto es lo que arroja///////

    apache2: Syntax error on line 281 of /etc/apache2/apache2.conf: Syntax error on line 49 of /etc/apache2/sites-enabled/000-default: /etc/apache2/sites-enabled/000-default:55: was not closed.\n/etc/apache2/sites-enabled/000-default:49: was not closed.
    …fail!

    ///////////////////////////////

    ############ código de 000-defaul ###############

    NameVirtualHost *:443
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/
    RewriteEngine on
    RewriteLog /var/log/apache2/https_rewrite.log
    RewriteLogLevel 1
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]

    Options FollowSymLinks
    AllowOverride None

    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ “/usr/share/doc/”

    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128

    DocumentRoot /var/www
    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/apache2/apache.pem

    #########################################################

    desde ya gracias

  16. adminNo Gravatar Junio 19th, 2009 11:23 pm

    Hola jv. Pues creo que es porque te falta poner < VirtualHost *:443 > y < /VirtualHost >. Fíjate cómo lo tengo puesto arriba, y si no te funciona vuelve a pegarme el error. Un saludo.

  17. gsusNo Gravatar Agosto 19th, 2009 4:29 pm

    buenas amigo a pesar de que he seguido al pie de la letra tu how to, no me funciona ya lleve un dia en esto y no doy con el error, sera q puedes darme una mano?

    esto es lo q me muestra el log al ejecutar sudo nano /var/log/apache2/error.log:

    [Wed Aug 19 09:25:52 2009] [notice] Graceful restart requested, doing restart
    [Wed Aug 19 09:25:52 2009] [warn] module deflate_module is already loaded, skipping
    [Wed Aug 19 09:25:52 2009] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
    [Wed Aug 19 09:25:52 2009] [warn] RSA server certificate CommonName (CN) `Jesus Ferrer’ does NOT match server name!?
    [Wed Aug 19 09:25:52 2009] [error] Illegal attempt to re-initialise SSL for server (theoretically shouldn’t happen!)

    al forzar al reinicio no me muestra error pero al ejecutar : sudo /etc/init.d/apache2 restart , me muesta lo siguiente:

    [Wed Aug 19 10:58:09 2009] [warn] module deflate_module is already loaded, skipping
    [Wed Aug 19 10:58:09 2009] [warn] module deflate_module is already loaded, skipping
    (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
    no listening sockets available, shutting down
    Unable to open logs

    agradeceria de verdad que me ayudaras saludos y gracias de antemano.

  18. adminNo Gravatar Agosto 21st, 2009 7:29 pm

    Hola gsus, creo que el error puede estar aquí:
    [Wed Aug 19 09:25:52 2009] [warn] RSA server certificate CommonName (CN) `Jesus Ferrer’ does NOT match server name!?

    Ahí te indica que el nombre del servidor no coincide. Comprueba que en todos los ficheros le des el mismo nombre.

Deje un comentario