RHCE-sarja: HTTPS:n käyttöönotto TLS:n kautta käyttämällä Apachen verkkoturvapalvelua (NSS) - Osa 8


Jos olet järjestelmänvalvoja, joka vastaa verkkopalvelimen ylläpidosta ja turvaamisesta, sinulla ei ole varaa olla tekemättä kaikkesi varmistaaksesi, että palvelimesi tarjoamat tai sen kautta kulkevat tiedot ovat aina suojattuja.

Jotta verkkoasiakkaiden ja palvelimien välinen viestintä olisi turvallisempaa, HTTPS-protokolla syntyi HTTP:n ja SSL:n yhdistelmänä ( Secure Sockets Layer) tai uudempi TLS (Transport Layer Security).

Joidenkin vakavien tietoturvaloukkausten vuoksi SSL on poistettu käytöstä vankemman TLS:n sijaan. Tästä syystä tässä artikkelissa selitämme kuinka suojata yhteydet verkkopalvelimesi ja asiakkaiden välillä TLS:n avulla.

Tämä opetusohjelma olettaa, että olet jo asentanut ja määrittänyt Apache-verkkopalvelimesi. Jos ei, tutustu seuraavaan tämän sivuston artikkeliin ennen kuin jatkat.

  1. Asenna LAMP (Linux, MySQL/MariaDB, Apache ja PHP) RHEL/CentOS 7:ään

OpenSSL:n ja apuohjelmien asennus

Varmista ensin, että Apache on käynnissä ja että sekä http että https ovat sallittuja palomuurin läpi:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Asenna sitten tarvittavat paketit:


yum update && yum install openssl mod_nss crypto-utils

Tärkeää: Huomaa, että voit korvata mod_nss komennolla mod_ssl yllä olevassa komennossa, jos haluat käyttää >OpenSSL-kirjastot NSS:n (Network Security Service) sijaan TLS:n käyttöönottamiseksi (kumpaa käytät, on täysin sinun päätettävissäsi , mutta käytämme tässä artikkelissa NSS:ää, koska se on kestävämpi; se esimerkiksi tukee uusimpia salausstandardeja, kuten PKCS #11).

Poista lopuksi mod_ssl-asennus, jos valitsit mod_nss:n tai päinvastoin.


yum remove mod_ssl

NSS:n (Network Security Service) määrittäminen

Kun mod_nss on asennettu, sen oletusasetustiedosto luodaan muodossa /etc/httpd/conf.d/nss.conf. Varmista sitten, että kaikki Listen- ja VirtualHost-käskyt osoittavat porttiin 443 (HTTPS:n oletusportti):


Listen 443
VirtualHost _default_:443

Käynnistä sitten Apache uudelleen ja tarkista, onko mod_nss-moduuli ladattu:


apachectl restart
httpd -M | grep nss

Seuraavaksi /etc/httpd/conf.d/nss.conf-määritystiedostoon tulee tehdä seuraavat muokkaukset:

1. Ilmoita NSS-tietokantahakemisto. Voit käyttää oletushakemistoa tai luoda uuden. Tässä opetusohjelmassa käytämme oletusarvoa:


NSSCertificateDatabase /etc/httpd/alias

2. Vältä manuaalista salasanan syöttämistä jokaisessa järjestelmässä. Aloita tallentamalla salasana tietokantahakemistoon osoitteessa /etc/httpd/nss-db-password.conf:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Missä /etc/httpd/nss-db-password.conf sisältää VAIN seuraavan rivin ja mypassword on salasana, jonka määrität myöhemmin NSS-tietokantaan:


internal:mypassword

Lisäksi sen käyttöoikeudet ja omistajuuden tulee olla 0640 ja root:apache:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat suosittelee SSL:n ja kaikkien TLSv1.0-versiota aiempien TLS-versioiden poistamista käytöstä >POODLE SSLv3 -haavoittuvuus (lisätietoja täältä).

Varmista, että jokainen NSSProtocol-direktiivin esiintymä kuuluu seuraavasti (löydät todennäköisesti vain yhden, jos et isännöi muita virtuaalisia isäntiä):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache kieltäytyy käynnistämästä uudelleen, koska tämä on itse allekirjoitettu varmenne, eikä tunnusta myöntäjää kelvollisiksi. Tästä syystä tässä nimenomaisessa tapauksessa sinun on lisättävä:


NSSEnforceValidCerts off

5. Vaikka se ei ole ehdottomasti pakollista, on tärkeää asettaa salasana NSS-tietokannalle:


certutil -W -d /etc/httpd/alias