Configurar Apache2 con SSL en Ubuntu

Aunque supongo que es igual que con Debian, como siempre.

Instalamos Apache2:

apt-get install apache2

Habilitamos el módulo ssl:

a2enmod ssl

Ejecutamos un script para crear nuestro certificado de seguridad para el servidor (estará autofirmado).

apache2-ssl-certificate

Nos hará una serie de preguntas…

 # apache2-ssl-certificate

creating selfsigned certificate
replace it with one signed by a certification authority (CA)

enter your ServerName at the Common Name prompt

If you want your certificate to expire after x days call this programm
with -days x
Generating a 1024 bit RSA private key
........++++++
....................++++++
writing new private key to '/etc/apache2/ssl/apache.pem'
-----
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]:ES
State or Province Name (full name) [Some-State]:Catalunya
Locality Name (eg, city) []:Tarragona
Organization Name (eg, company; recommended) []:jhernandez
Organizational Unit Name (eg, section) []:home
server name (eg. ssl.domain.tld; required!!!) []:jhernandez.gpltarragona.org
Email Address []:admin@jhernandez.gpltarragona.org

Ahora crearemos la configuración de “el sitio” para el servidor seguro basándonos en la que lleva por defecto:

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl

/etc/apache2/sites-enabled/ssl tiene que empezar de la siguiente manera:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/ssl.jhernandez.gpltarragona.org/htdocs
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/ssl.jhernandez.gpltarragona.org/htdocs>
#[...aquí sigue...]

Tendreis que cambiar lo de directory según el directorio que queráis…
Ahora, /etc/apache2/sites-enabled/default también hay que configurarlo de la misma forma:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/jhernandez.gpltarragona.org/htdocs
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/jhernandez.gpltarragona.org/htdocs>
#[...aquí sigue...]

Ahora añade en el fichero /etc/apache2/ports.conf:

Listen 443

Por último, sólo basta añadir dentro del fichero “/etc/apache2/sites-enabled/ssl” en cualquier lugar (por ejemplo justo debajo de “ServerSignature On”):

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

Y por último, reiniciamos apache2:

/etc/init.d/apache2 force-reload

Autor: jBilbo

This entry was posted in Ubuntu. Bookmark the permalink.

17 Responses to Configurar Apache2 con SSL en Ubuntu

  1. Anonymous says:

    apt-get install apache-ssl i no has de fer res. T’ho pregunta tot tot tot i només cal fer enter enter enter.
    Això em recorda un comentari de nosequí que deia “fins i tot un pollastre pot instal·lar Debian”

  2. jBilbo says:

    Això que dius es per apache1 i no per apache2, el paquet apache-ssl també esta per Ubuntu.

  3. Anonymous says:

    pues creo que ayudaria que pusieseis el #[…aquí sigue…] porque no se que poner ahi 🙁 se que soy un poco torpe pero es que llevop dos dias intentando echar esto a andar…

  4. jBilbo says:

    Lo que va después de esto es opcional, y Ubuntu (Debian supongo que tb) lleva un fichero de ejemplo donde lleva unas cuantas opciones por defecto…
    Lo que hay en el artículo es lo importante, lo que hay que retocar. Se podría cerrar el fichero de configuración simplemente con un:

    </VirtualHost>
    

    Y yasta. Pero por si no tienes el fichero de ejemplo, te pongo lo que me pone a mi después del “aquí sigue”:

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
        </Directory>
    
        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
        ServerSignature On
    
        Alias /icons/ "/usr/share/apache2/icons/"
        <Directory "/usr/share/apache2/icons">
            Options Indexes MultiViews
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    
        Alias /doc/ "/usr/share/doc/"
        RedirectMatch ^/doc/apache2-doc/manual(.*)$ /manual$1
        <Directory "/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
        </Directory>
    
    </VirtualHost>
    
  5. Anonymous says:

    He puesto todo tal cual como comentas, el apache no da ningun error arrancando pero no funciona

    Me pone
    La conexión ha terminado inesperadamente, algunos datos pudieran ser transferido

    Te comento, tengo un sitio web con osCommerce, cuando pinchan para realizar un pedido a partir de ese momento eso me funcionaba con apache-ssl y funcionaba bien, ahora con apache2 no logro que funcione.

    Si te aclara y pudieras ayudarme en algo, gracias de todas maneras tu documento me a servido para aclararme con apache2 un poco

  6. Anonymous says:

    Si todavía no lo has arreglado (que supongo que sí por la fecha del post) yo lo he solucionado quitando todos los virtualhost que había metido en httpd.conf que interferian.

    Un saludo

  7. fernando says:

    Gracias!! muy simple

  8. ss says:

    quero sa ber como montar un servidor mysql -posgrado -apache en ubuntu

  9. danimaravillas says:

    joder tio, la caña. he dado mil vueltas para poner el ssl y la verdad, claro com oesto pocas veces. Que es lo que normalmente se necesita, una vez se tiene un inicio, de ahí en adelante es sencillo. Claro y explícito. Gracias.

  10. Javier says:

    Muchas gracias amigo! Leyendo tu mini-how-to consegui configurar el sever que llevaba 2 dias como loco.
    Un saludo.

  11. nekropsya says:

    Gracias mil por tomarte el tiempo de hacer algo que me ha esclarecido por completo las dudas. Paso a paso lo seguí y me solucionó todo, a veces hay que fijarse bien que está haciendo uno,porque me atoré poniendo la linea *:443 y la *:80 en el mismo archivo por no leer bien. Luego ya vi que una cosa es por un lado y la otra por el otro. :-S Pero despistados como yo hay muchos así que leanle bien y les sale!

  12. lukitas says:

    Genial!! despues de muchos intentos lo consegui. Tenía problemas con la version de apache 2.2.4 porque añadía al fichero ports.conf la linea
    Listen 443 y ya existía

    Listen 80

    Listen 443

    Gracias por la ayuda

  13. manuel says:

    El script apache2-ssl-certificate no está en Debian Etch. Tampoco lo he encontrado en Ubuntu Gutsy.

  14. Carlos says:

    Podeis crear vuestro propio certificado con la orden “openssl”, es fácil, y en 3 pasos tendreis vuestro certificado autofirmado.
    (en Ubuntu Hardy Heron)

    Muy bueno el tutorial, gracias por la dedicación.

  15. Ultano says:

    Manuel,

    si no te viene ese script, aquí tienes una

  16. Ultano says:

    Manuel,

    si no te viene ese script, aquí tienes una solución al apache2-ssl-certificate command not found:

    http://cgacimartin.wordpress.com/2008/07/20/generacion-de-claves-para-ssl-en-apache2-sin-apache2-ssl-certificate

  17. ale says:

    Super, me sirvio

Leave a Reply