Kuinka suojata Apache SSL:llä ja Let’s Encryptillä FreeBSD:ssä


Tässä opetusohjelmassa opimme suojaamaan Apache HTTP -palvelimen TLS/SSL-varmenteilla, joita Let's Encrypt tarjoaa FreeBSD 11:ssä. x. Käsittelemme myös, kuinka Lets’ Encryptin varmenteen uusimisprosessi automatisoidaan.

Lue myös: Asenna Let's Encrypt for Nginx FreeBSD:lle

Apache-verkkopalvelin käyttää TLS/SSL-varmenteita päätesolmujen välisen tai tavallisemmin palvelimen ja asiakkaan välisen viestinnän salaamiseen turvallisuuden takaamiseksi. Let’s Encrypt tarjoaa certbot-komentorivityökalun, joka on sovellus, joka voi helpottaa tapaa hankkia luotettavia varmenteita ilmaiseksi.

Vaatimukset:

  1. FreeBSD 11.x:n asennus
  2. 10 asiaa FreeBSD:n asennuksen jälkeen
  3. Kuinka asentaa Apache, MariaDB ja PHP FreeBSD: hen

Vaihe 1: Määritä Apache SSL FreeBSD:ssä

1. Ennen kuin aloitat certbot-apuohjelman asentamisen ja TSL-määritystiedoston luomisen Apachelle, luo ensin kaksi erillistä hakemistoa nimeltä sites-available ja >sites-enabled Apachen juurimäärityshakemistossa antamalla alla olevat komennot.

Näiden kahden hakemiston tarkoitus on helpottaa virtuaalisen hosting-määritysten hallintaa järjestelmässä muuttamatta Apachen httpd.conf-päämääritystiedostoa aina, kun lisäämme uuden virtuaalisen isännän.

mkdir /usr/local/etc/apache24/sites-available
mkdir /usr/local/etc/apache24/sites-enabled

2. Kun olet luonut molemmat hakemistot, avaa Apachen httpd.conf-tiedosto tekstieditorilla ja lisää seuraava rivi lähelle tiedoston loppua alla olevan kuvan mukaisesti.

nano /usr/local/etc/apache24/httpd.conf

Lisää seuraava rivi:

IncludeOptional etc/apache24/sites-enabled/*.conf

3. Ota seuraavaksi TLS-moduuli käyttöön Apachelle luomalla seuraava uusi tiedosto nimeltä 020_mod_ssl.conf tiedostossa modules.d< hakemistoon, jossa on seuraava sisältö.

nano /usr/local/etc/apache24/modules.d/020_mod_ssl.conf

Lisää seuraavat rivit tiedostoon 020_mod_ssl.conf.

Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300

4. Poista nyt kommentit SSL-moduulista /usr/local/etc/apache24/httpd.conf-tiedostosta poistamalla hashtag alusta. seuraavasta rivistä alla olevan kuvan mukaisesti:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Luo seuraavaksi verkkotunnuksesi TLS-määritystiedosto sivustot-käytettävissä-hakemistoon, mieluiten verkkotunnuksesi nimellä, kuten kohdassa alla oleva ote:

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Lisää seuraavat virtualhost-määritykset tiedostoon bsd.lan-ssl.conf.

<VirtualHost *:443>
    ServerName www.yourdomain.com
	ServerAlias yourdomain.com
                DocumentRoot "/usr/local/www/apache24/data/"
	SSLEngine on

	SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/usr/local/www/apache24/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

	BrowserMatch "MSIE [2-5]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

	CustomLog "/var/log/apache/httpd-ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

	<Directory "/usr/local/www/apache24/data/">
            Options Indexes FollowSymLinks MultiViews
        #AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        #Controls who can get stuff from this server file
                        Require all granted
        </Directory>
       
    ErrorLog "/var/log/apache/yourdomain.ssl-error.log"
    CustomLog "/var/log/apache/yourdomain.ssl-access_log" combined

</VirtualHost>

Varmista, että vaihdat verkkotunnuksen nimen muuttujan ServerName-, ServerAlias-, ErrorLog- ja CustomLog-käskyistä vastaavasti.

Vaihe 2: Asenna Lets’Encrypt FreeBSD:hen

6. Anna seuraavassa vaiheessa seuraava komento asentaaksesi Certbot-apuohjelman, jonka tarjoaa Let's Encrypt ja jota käytetään hankkimaan ilmaisetApache TSL -varmenteet verkkotunnuksellesi.

Kun asennat certbotin, näytölläsi näkyy sarja kehotteita. Määritä certbot-apuohjelma alla olevan kuvakaappauksen avulla. Myös certbot-apuohjelman kääntäminen ja asentaminen saattaa kestää jonkin aikaa koneen resursseista riippuen.

cd /usr/ports/security/py-certbot
make install clean

7. Kun käännösprosessi on valmis, anna alla oleva komento päivittääksesi certbot-apuohjelman ja certbot-vaatimukset.

pkg install py27-certbot
pkg install py27-acme

8. Luo varmenne verkkotunnuksellesi antamalla alla olevan kuvan mukainen komento. Varmista, että annat oikean webroot-sijainnin, johon verkkosivustosi tiedostot on tallennettu tiedostojärjestelmään (DocumentRoot-ohje verkkotunnuksesi määritystiedostosta) käyttämällä -w-lippua. Jos sinulla on useita aliverkkotunnuksia, lisää ne kaikki -d-lipulla.

certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com

Kun hankit varmenteen, anna sähköpostiosoite varmenteen uusimista varten, paina a hyväksyäksesi Let’s Encryptin käyttöehdot ja n, jos et jaa sähköpostiosoitetta Let’s Encrypt -kumppaneille.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email 
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email 

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/apache24/data for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-11-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

9. Kun olet hankkinut verkkotunnuksesi varmenteet, voit suorittaa ls-komennon listataksesi kaikki varmenteen komponentit (ketju, yksityinen avain, varmenne) alla olevan esimerkin mukaisesti.

ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/

Vaihe 3: Päivitä Apache TLS -sertifikaatit FreeBSD:lle

10. Jotta voit lisätä Let’s Encrypt -varmenteita verkkosivustollesi, avaa verkkotunnuksesi apache-määritystiedosto ja päivitä seuraavat rivit vastaamaan myönnettyjen varmenteiden polkua.

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Lisää nämä TLS-varmennerivit:

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

11. Ota lopuksi TLS-määritystiedosto käyttöön luomalla verkkotunnuksesi TLS-määritystiedostolle symbolilinkki sivustot-käyttöön-hakemistoon, tarkista Apache-määritykset mahdollisten syntaksivirheiden varalta ja jos syntaksi on OK, käynnistä Apache-daemon uudelleen antamalla alla olevat komennot.

ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/
apachectl -t
service apache24 restart

12. Jos haluat tarkistaa, kuunteleeko Apache-palvelu HTTPS-porttia 443, anna seuraava komento luetellaksesi httpd-verkkopistokkeet.

sockstat -4 | grep httpd

13. Voit siirtyä verkkotunnuksesi osoitteeseen selaimesta HTTPS-protokollan kautta varmistaaksesi, että Let’s Encrypt -varmenteet on otettu käyttöön.

https://www.yourdomain.com

14. Saadaksesi lisätietoa myönnetystä Let’s Encrypt -sertifikaatista komentoriviltä, käytä openssl-komentoa seuraavasti.

openssl s_client -connect www.yourdomain.com:443

15. Voit myös tarkistaa, onko liikenne salattu voimassa olevalla Let's Encrypt CA -varmenteella mobiililaitteesta, kuten alla olevassa mobiililaitteen kuvakaappauksessa näkyy.

Siinä kaikki! Asiakkaat voivat nyt vierailla sivustollasi turvallisesti, koska palvelimen ja asiakkaan selaimen välillä kulkeva liikenne on salattua. Monimutkaisempia certbot-apuohjelmaa koskevia tehtäviä löytyy seuraavasta linkistä: https://certbot.eff.org/