Feb 26 2008

Debian, Apache2 + ssl + mod_rewrite

Tag: Apache,Debian,Linux,SEOJens @ 23:59

Výchozí instalace web serveru Apache2 na Debianu (Etch, Lenny) neobsahuje podporu SSL — tedy protokolu HTTPS. Zároveň neobsahuje ani zavedený modul mod_rewrite toliko potřebný pro krásná URL a SEO optimalizaci. Vše lze napravit několika málo příkazy.

Instalace Apache a nástrojů na generování certifikátů:

# apt-get install apache2 ssl-cert openssl

Vytvoření adresáře pro osobní certifikáty:

# mkdir /etc/apache2/ssl

Vytvoření osobního certifikátu pro doménu např. jens.cz, pokud chcete nastavit SSL pro všechny subdomény, při dotazu na „Common Name (CN)“ zadejte „*.jens.cz„, jinak postačí „jens.cz„:

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

Nastavte oprávnění certifikátu:

# chmod 600 /etc/apache2/ssl/jenscz.pem

V souboru /etc/apache2/ports.conf přidejte řádek:

Listen 443

Vytvořte si soubor /etc/apache2/sites-available/ssl:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerAdmin webmaster@jens.cz
  ServerName jens.cz
  ServerAlias *.jens.cz

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

  DocumentRoot /var/www/
  <Directory />
    Options FollowSymLinks
    AllowOverride All
  </Directory>
  <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  LogLevel warn
  ErrorLog /var/log/apache2/ssl-error.log
  CustomLog /var/log/apache2/ssl-access.log combined

</VirtualHost>

„Povolíme“ nový konfiruační soubor tím že vytvoříme symbolický link:

# ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl

Zavedeme modul Apache pro SSL:

# a2enmod ssl

Zavedeme modul Apache pro mod_rewrite:

# a2enmod rewrite

A konečně restart Apache:

# /etc/init.d/apache2 restart

That’s all, folks! ;)

6 komentáře k článku “Debian, Apache2 + ssl + mod_rewrite”

  1. hobit napsal:

    Myslel jsem si, ze kdyz je Debian na serverech tak rozsireny, ze bude stacit do googlu napsat instalace apache ssl a budu mit hned navod jak ho zprovoznit, misto toho jsem nasel jen spousty balastu, ktery s tim nemel nic spolecneho a miliony stranek jak zprovoznit apache 1.3 + mod-ssl, bohuzel tyto stranky byli i treba 5 let stare!

    Az konecne jse narazil na tuto stranku podle ktere jsem nastavil Apache2 se ssl prakticky za 5 minut.

    Diky, diky.


    Hobit.

  2. Jens napsal:

    Tento navod myslim bude fungovat na soucasne stable verzi (Lenny) a na starsich (Etch), soucasny testing (Squeeze) ma myslim rozhozene konfigurace pro SSL pomoci jednoho velkeho SSL konfigu a nasledne includuje dalsi mensi virtualhosty podobne jako tomu je pri konfiguraci defaultniho portu 80. Mozna namet na dalsi clanek :)

  3. archenroot napsal:

    Stručné, funkční, čisté. Just nice :-))
    Díky

  4. Dominik napsal:

    Dobrý den, postupoval jsem dle vašeho návodu a když jsem restartoval apache2 ( /etc/init.d/apache2 restart ), vyskočilo mi

    Restarting web server: apache2(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
    failed!

    A apache2 nejde nahodit, prosím o radu.
    Předem děkuji

  5. Jens napsal:

    Podle toho co pisete to vypada, ze nejaky proces jiz na tomto rozhrani a portu (0.0.0.0:433) nasloucha. Je mozne ze je to spatne nakonfiguravany a neukonceni proces Apache. Zjistete jake procesy bezi (# ps -faux) a pripadne jake naslouchaji na danem portu (# netstat -lap, pripadne # netstat -lapn pro ciselnou reprezentaci portu) a proces setrelit (kill).

  6. Mirek napsal:

    Ahoj. Díky za super návod. A pokud se ti tam zobrazila tato chyba „Restarting web server: apache2(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
    failed!“ Tak do souboru nezapisuj Listen 443 /etc/apache2/ports.conf