Wéi Séchert Apache mat SSL a Loosst eis am FreeBSD verschlësselen


An dësem Tutorial léiere mir wéi Dir Apache HTTP-Server mat TLS/SSL-Zertifikater ofgeséchert, ugebuede vu Let's Encrypt in FreeBSD 11.x. Mir wäerten och ofdecken wéi de Prozess vun der Zertifikat Erneierung fir Lets 'Encrypt automatiséiert gëtt.

TLS/SSL Zertifikater gi vum Apache Webserver benotzt fir d'Kommunikatioun tëscht Endknoten ze verschlësselen, oder méi ordinär tëscht dem Server a Client fir Sécherheet ze bidden. Let's Encrypt bitt certbot Kommandozeil Utility, dat ass eng Applikatioun déi d'Art a Weis wéi Dir vertrauenswürdege Certificaten gratis kënnt erliichteren.

  1. Installatioun vu FreeBSD 11.x
  2. 10 Saachen no der FreeBSD Installatioun ze maachen
  3. Wéi installéiere ech Apache, MariaDB a PHP am FreeBSD

Schrëtt 1: Apache SSL op FreeBSD konfiguréieren

1. Ier Dir ufänkt d'Certbot Utility z'installéieren an d'TSL Konfiguratiounsdatei fir Apache ze kreéieren, erstellt als éischt zwee verschidde Verzeichnisser genannt Site-verfügbar a Site-aktivéiert am Apache Root Konfiguratiounsverzeichnis andeems Dir déi folgend Kommandoen ausginn.

Den Zweck vun dësen zwee Verzeichnisser ass d'virtuelle Hosting Konfiguratiounsmanagement am System z'erliichteren, ouni d'Haapt Apache httpd.conf Konfiguratiounsdatei all Kéier wann mir en neie virtuelle Host addéieren.

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

2. Nodeems Dir béid Verzeichnisser erstallt hutt, öffnen d'Apache httpd.conf Datei mat engem Texteditor a fügen d'folgend Zeil no un d'Enn vun der Datei un, wéi hei ënnen illustréiert.

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

Füügt déi folgend Linn derbäi:

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

3. Als nächst aktivéiert den TLS Modul fir Apache andeems Dir déi folgend eng nei Datei mam Numm 020_mod_ssl.conf am modules.d Verzeichnis mat dem folgenden Inhalt erstellt.

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

Füügt folgend Zeilen an de Fichier 020_mod_ssl.conf.

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

4. Kommentéiert elo den SSL-Modul vun /usr/local/etc/apache24/httpd.conf Datei andeems Dir den Hashtag vum Ufank vun der folgender Linn erofhuelt wéi hei ënnen illustréiert:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Als nächst erstellt d'TLS Konfiguratiounsdatei fir Ären Domain am Site-verfügbare Verzeechnes, am léifsten mam Numm vun Ärem Domain, wéi am Auszich hei ënnen presentéiert:

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

Füügt folgend virtualhost Konfiguratioun un d'Datei 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>

Vergewëssert Iech datt Dir den Domain Numm Variabel vun ServerName, ServerAlias, ErrorLog, CustomLog Aussoen entspriechend ersetzt.

Schrëtt 2: Installéiert Lets'Encrypt op FreeBSD

6. Op de nächste Schrëtt, gitt de folgende Kommando aus fir d'Certbot Utility ze installéieren, déi vum Let's Encrypt geliwwert gëtt, déi benotzt gëtt fir Apache TSL gratis Zertifikater fir Är Domain ze kréien.

Beim Installatioun vun certbot gëtt eng Serie vu Prompt op Ärem Écran ugewisen. Benotzt de Screenshot hei ënnen fir d'certbot Utility ze konfiguréieren. Och d'Kompilatioun an d'Installatioun vun der certbot Utility kann e bëssen Zäit daueren, ofhängeg vun Ärem Maschinnressourcen.

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

7. Nodeems de Kompiléierungsprozess fäerdeg ass, gitt de Kommando hei ënnen fir d'Certbot Utility an d'certbot erfuerderlech Ofhängegkeeten ze aktualiséieren.

# pkg install py27-certbot
# pkg install py27-acme

8. Fir e Certificat fir Är Domain ze generéieren, gitt de Kommando aus wéi hei ënnen illustréiert. Vergewëssert Iech datt Dir déi richteg Webroot Plaz ubitt wou Är Websäitdateien am Dateiesystem gespäichert sinn (DocumentRoot Direktiv vun Ärer Domain Konfiguratiounsdatei) mam -w Fändel. Wann Dir e puer Subdomains hutt, addéiere se se all mam -d Fändel.

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

Wärend Dir den Zertifika kritt, gitt eng E-Mailadress fir d'Erneierung vum Zertifikat, dréckt op a fir mat Let's Encrypt Konditioune averstanen an n fir d'E-Mailadress net ze deelen Let's Encrypt Partner.

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. Nodeems Dir d'Zertifikater fir Är Domain kritt hutt, kënnt Dir ls Kommando ausféieren fir all d'Zertifikatskomponenten (Kette, Privatschlëssel, Zertifikat) ze lëschten wéi am Beispill hei ënnendrënner.

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

Schrëtt 3: Update Apache TLS Certificaten op FreeBSD

10. Fir Let's Encrypt Certificaten op Är Websäit ze addéieren, öffnen d'Apache Konfiguratiounsdatei fir Är Domain an aktualiséieren déi folgend Linnen fir de Wee vun den erausginn Zertifikater ze reflektéieren.

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

Füügt dës TLS Zertifika Linnen derbäi:

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. Endlech aktivéiert d'TLS Konfiguratiounsdatei, andeems Dir e Symlink fir Är Domain TLS Konfiguratiounsdatei op Site-aktivéierten Verzeechnes erstellt, kontrolléiert d'Apache Konfiguratiounen fir méiglech Syntaxfehler an, wann d'Syntax OK ass, den Apache Daemon nei starten andeems Dir déi folgend Kommandoen ausginn.

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

12. Fir ze kontrolléieren ob den Apache Service op HTTPS Hafen 443 lauschtert, gitt de folgende Kommando aus fir httpd Netzwierk Sockets opzemaachen.

# sockstat -4 | grep httpd

13. Dir kënnt op Är Domain Adress vun engem Browser iwwer HTTPS Protokoll navigéieren fir ze bestätegen datt Let's Encrypt Certificaten erfollegräich applizéiert ginn.

https://www.yourdomain.com

14. Fir extra Informatioun iwwer de erausginn Let's Encrypt Zertifikat vun der Kommandozeil ze kréien, benotzt de openssl Kommando wéi follegt.

# openssl s_client -connect www.yourdomain.com:443

15. Dir kënnt och verifizéieren ob de Traffic verschlësselt ass mat engem gültege Certificat deen vum Let's Encrypt CA vun engem mobilen Apparat geliwwert gëtt, wéi am ënnen mobilen Screenshot illustréiert.

Dat ass alles! D'Clientë kënnen elo Är Websäit sécher besichen, well de Traffic, deen tëscht dem Server an dem Client säi Browser fléisst, verschlësselt ass. Fir méi komplex Aufgaben betreffend certbot Utility besicht de folgende Link: https://certbot.eff.org/