SSL sertifikato generavimas. Apache2 SSL aktyvavimas

Instaliuojame Apache2:
sudo apt-get install apache2 libapache-mod-ssl

PASTABA: apache2-ssl-certificate neįtraukiamas į Ubuntu nuo feisty versijos, todėl reik atskirai įdiegti:
# wget http://czarism.com/files/apache2-ssl.tar.gz
# tar -xzvf apache2-ssl.tar.gz
# sudo mv ssleay.cnf /usr/share/apache2/
# sudo mv apache2-ssl-certificate /usr/sbin/

Dabar jau galima sugeneruoti OpenSSL certifikatą paleidžiant Apache2-ssl-certificat. Paleidus skriptą reikia atsakyti į kelis klausimus, reikalingus sugeneruoti sertifikatui.
# sudo apache2-ssl-certificate -days 365
Kandangi ant Ubuntu server 8.04 ši komanda nesuveikė, kaip tikėjausi (nors ant Ubuntu 7.04 neturėjau problemų) išmetė kažka panašaus į 🙂 :
with -days x
Generating a 1024 bit RSA private key
……………++++++
….++++++
writing new private key to ‘/etc/apache2/ssl/apache.pem’
/etc/apache2/ssl/apache.pem: No such file or directory
2170:error:02001002:system library:fopen:No such file or directory:bss_file.c:352:fopen(‘/etc/apache2/ssl/apache.pem’,’w’)
2170:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:

Aiškinimuisi kas do velniama neskyriau laiko, todėl puikiai suveikė pasinaudojimas openssl:
openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem
Šiuo atveju, net nebūtina apache2-ssl-certificate, taip dar paprasčiau, tik komanda sudėtingesnė 😉

Paleidus skriptą viskas atrodo panašiai:
Country Name (2 letter code) [GB]:LT
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:Kaunas
Organization Name (eg, company; recommended) []:[GLL]
Organizational Unit Name (eg, section) []:Tevas
server name (eg. ssl.domain.tld; required) []:gll.lt
Email Address []:

Toliau reikia sukonfigūruoti, kad Apache2 naudotų HTTPS ant 443 porto (standartinis SSL portas).
#sudo echo "Listen 443" >> /etc/apache2/ports.conf

Sukuriame SSL puslapį:
# sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Aktyvuojame SSL puslapį:
#sudo a2ensite ssl

Dabar sutvarkome “ssl” puslapio konfirgūraciją.
sudo vim sites-available/ssl

SURANDAM:
NameVirtualHost *
<virtualhost *>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/
</virtualhost>

PAKEIČIAM Į:
NameVirtualHost *:443
<virtualhost *:443>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/
 SSLCertificateFile /etc/apache2/ssl/apache.pem
 SSLEngine On
</virtualhost>

Perkraunam Apache2 serverį:
# sudo /etc/init.d/apache2 force-reload

Nu va pasirodė kodėl nesuveikė ir mėtė klaidas – “sudo apache2-ssl-certificate -days 36“. Viskas paprasta nėra katalogo /etc/apache2/ssl ir net Apache2 atsisakė persikrauti, nes nurodžiau, akd sertifikato ieškotų “/etc/apache2/ssl/apache.pem“, o su openssl nurodžiau sertifikatą sukurti į “/etc/apache2/”, todėl sukūriau kur reikiamą katalogą ir į jį perkėliau sertifikato failą “apache.pem” 🙂

Jei norima, kad koks nors puslapis visada būtų pasiekiamas per HTTPS pvz: webmail, tai galima atlikti pasinaudojus mod_rewrite.

Pirma aktyvuojamas modulis:
#sudo a2enmod rewrite

Įrašimos sekančios eilutės į /etc/apache2/sites-available/default:
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/webmail(.*)$ https://%{SERVER_NAME}/webmail$1 [L,R]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2

Jei norima, kad SSL būtų visada naudojama, padarome redirektą iš 80 porto į 443 portą (HTTPS):
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

Perkraunam Apache2 serverį:
# sudo /etc/init.d/apache2 force-reload

 
Naudojausi:
Apache2 SSL in Ubuntu
Debian/Ubuntu Apache2 and OpenSSL (https)
Secure Websites Using SSL And Certificates

[GLL]Zapatdlo Written by:

Be First to Comment

Leave a Reply

Your email address will not be published.