Tehtävän oli toimia CA:na ja luoda palvelimen SSL-sertifikaatti ja avain, sekä konfiguroida Apache käyttämään SSL-salausta. Käytän tehtävässäni Ubuntun sivuilta löytyviä materiaaleja OpenSSL ja HTTPD – Apache2 Web Server.
Ensiksi loin kaksi virtuaalikonetta, yhden Ubuntu-palvelinkoneen (Apache) ja tavallisen LinuxMint-koneen (Desktop). Asetin molemmille koneille verkkoyhteydeksi bridged ja valitsin asennusvaiheessa OpenSSH-asennuksen ja muuten asennusprosessi tapahtui normaalisti.
Asennuksen jälkeen päivitin ohjelmapaketin ja asennetaan OpenSSL-jaettu ohjelmakirjasto, jotta asennus voidaan aloittaa. Niitä on kuitenkin useita, joten oikea täytyy ensin etsiä
sudo apt-get update apt-cache search libssl |grep ssl
joista valitaan uusin (harjoituksen tekohetkellä libssl0.8.9):
sudo apt-get install libssl0.9.8
Asennettu versio tarkistuu helposti komennolla
openssl version
Kaikki on siis kunnossa, joten jatketaan eteenpäin.
Ensiksi luodaan ohjeen mukaisesti seuraavat hakemistot
cd && mkdir -p myCA/signedcerts && mkdir muCA/private && cd myCA
Luodaan sitten ensijainen tietokanta hakemistoon myCA alle.
echo '01' > serial && touch index.txt
Jonka jälkeen luodaan asennustiedosto.
sudo nano caconfig.cnf
Koska tiedosto täytyy luoda kokonaan itse, ei valmista pohjaa ole olemassa. Ilman graafista käyttöliittymää tekstin kopiointi on myös hyvin haastavaa, otetaan SSH-yhteys dekstop-koneelta palvelinkoneelle.
ssh apache@(palvelinkoneen ip-osoite)
Tietyt kohdat täytyy myös muistaa kohdat omaa konetta vastaavaksi, jotta tiedostopolut ovat oikein ja asennustiedosto toimii.
root_ca_distinguished_name osion voi myös muokata sopivammaksi
Nyt asennustiedosto on valmis, joten tallennetaan ja suljetaan. Jotta openssl väline osaa etsiä asennustiedostoa oikeasta paikasta, kerrotaan sille mistä se löytyy:
export OPENSSL_CONF=~/myCA/caconfig.cnf
Luodaan sitten CA-sertifikaatti ja avain
openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform PEM -days 1825
Muista prosessin aikana luotu PEM-salasana!
Luodaan sitten serveri sertifikaatti. Kopioidaan taas suoraan ohjeesta pohja ja muutetaan tietoja vastaamaan omaa verkkoympäristöä. Tallennetaan ja ajetaan seuraavat komennot
export OPENSSL_CONF=~/myCA/exampleserver.cnf openssl req -newkey rsa:1024 -keyout tempkey.peopenm -keyform PEM -out tempreq.pem -outform PEM
Käännetään sitten väliaikainen salainen avain salaamattomaksi
openssl rsa < tempkey.pem > server_key.pem
Kerrotaan mistä sijainnista halutaan openssl etsivän asennustiedostoa:
export OPENSSL_CONF=~/myCA/caconfig.cnf
Allekirjoitetaan sertifikaatti CA-avaimella
openssl ca -in tempreq.pem -out server_crt.pem
Poistetaan väliaikainen sertifikaatti ja avain tiedostot
rm -f tempkey.pem && rm -f tempreq.pem
Luodaan sitten tiedosto, joka sisältää molemmat: sertifikaatin ja avaimen.
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
Muutetaan sertifikaatti+avain -tiedosto PKCS#12 muotoon
openssl pkcs12 -export -out mycert.pfx -in mycert.pem -name "Certificate for Testing"
Tämän jälkeen on enää jäljellä HTTPS-konfigurointi. Ajetaan komennot
sudo a2enmod ssl sudo service apache2 restart sudo a2ensite default-ssl sudo service apache2 reload sudo /etc/init.d/apache2 restart