Apache'nin SSL ile Güvenliği Nasıl Sağlanır ve FreeBSD'de Let's Encrypt


Bu eğitimde, FreeBSD 11'de Let's Encrypt tarafından sunulan TLS/SSL sertifikalarıyla Apache HTTP sunucusunun güvenliğini nasıl sağlayacağımızı öğreneceğiz. x. Lets' Encrypt için sertifika yenileme sürecinin nasıl otomatikleştirileceğini de ele alacağız.

Ayrıca Okuyun: FreeBSD'de Let's Encrypt for Nginx'i yükleyin

TLS/SSL sertifikaları, Apache web sunucusu tarafından uç düğümler arasındaki iletişimi şifrelemek için veya daha yaygın olarak, güvenliği sağlamak amacıyla sunucu ile istemci arasındaki iletişimi şifrelemek için kullanılır. Let's Encrypt, güvenilir sertifikaları ücretsiz olarak edinme yolunu kolaylaştırabilecek bir uygulama olan certbot komut satırı yardımcı programını sağlar.

Gereksinimler:

  1. FreeBSD 11.x'in kurulumu
  2. FreeBSD Kurulumundan Sonra Yapılacak 10 Şey
  3. FreeBSD'de Apache, MariaDB ve PHP Nasıl Kurulur

Adım 1: FreeBSD'de Apache SSL'yi yapılandırın

1. Certbot yardımcı programını kurmaya ve Apache için TSL yapılandırma dosyasını oluşturmaya başlamadan önce, ilk olarak sites-available ve adlarında iki ayrı dizin oluşturun. Aşağıdaki komutları vererek Apache kök yapılandırma dizininde >sitelerin etkin olmasını sağlayın.

Bu iki dizinin amacı, her yeni sanal konak eklediğimizde ana Apache httpd.conf yapılandırma dosyasını değiştirmeden sistemdeki sanal barındırma yapılandırma yönetimini kolaylaştırmaktır.

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

2. Her iki dizini de oluşturduktan sonra Apache httpd.conf dosyasını bir metin düzenleyiciyle açın ve aşağıda gösterildiği gibi dosyanın sonuna yakın bir yere aşağıdaki satırı ekleyin.

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

Aşağıdaki satırı ekleyin:

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

3. Ardından, modules.d<'de 020_mod_ssl.conf adlı aşağıdaki yeni dosyayı oluşturarak Apache için TLS modülünü etkinleştirin. dizini aşağıdaki içeriğe sahiptir.

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

020_mod_ssl.conf dosyasına aşağıdaki satırları ekleyin.

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

4. Şimdi, hashtag'i baştan kaldırarak /usr/local/etc/apache24/httpd.conf dosyasındaki SSL modülünün açıklamasını kaldırın. aşağıda gösterildiği gibi aşağıdaki satırın:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Ardından, siteler-available dizininde, tercihen alan adınızın adıyla birlikte, alan adınız için TLS yapılandırma dosyasını oluşturun. aşağıdaki alıntı:

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

bsd.lan-ssl.conf dosyasına aşağıdaki sanal ana bilgisayar yapılandırmasını ekleyin.

<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>

ServerName, ServerAlias, ErrorLog, CustomLog ifadelerindeki alan adı değişkenini buna göre değiştirdiğinizden emin olun.

Adım 2: Lets'Encrypt'i FreeBSD'ye yükleyin

6. Bir sonraki adımda, Let's Encrypt tarafından sağlanan ve certbot yardımcı programını yüklemek için aşağıdaki komutu verin. alan adınız için güçlü>Apache TSL ücretsiz sertifikaları.

Certbot'u yüklerken ekranınızda bir dizi bilgi istemi görüntülenecektir. certbot yardımcı programını yapılandırmak için aşağıdaki ekran görüntüsünü kullanın. Ayrıca, makine kaynaklarınıza bağlı olarak certbot yardımcı programının derlenmesi ve kurulması biraz zaman alabilir.

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

7. Derleme işlemi bittikten sonra, certbot yardımcı programını ve certbot'un gerektirdiği bağımlılıkları güncellemek için aşağıdaki komutu verin.

pkg install py27-certbot
pkg install py27-acme

8. Alan adınız için bir sertifika oluşturmak için komutu aşağıda gösterildiği gibi verin. -w işaretini kullanarak web sitesi dosyalarınızın dosya sisteminde depolandığı doğru web kökü konumunu (alan adı yapılandırma dosyanızdaki DocumentRoot yönergesi) sağladığınızdan emin olun. Birden fazla alt alan adınız varsa hepsini -d işaretiyle ekleyin.

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

Sertifikayı alırken, sertifikanın yenilenmesi için bir e-posta adresi girin, Let's Encrypt hüküm ve koşullarını kabul etmek için a tuşuna basın ve e-posta adresini Let's Encrypt ortaklarıyla paylaşmamak için n tuşuna basın.

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. Alan adınız için sertifikaları aldıktan sonra aşağıdaki örnekte olduğu gibi sertifikanın tüm bileşenlerini (zincir, özel anahtar, sertifika) listelemek için ls komutunu çalıştırabilirsiniz.

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

3. Adım: FreeBSD'de Apache TLS Sertifikalarını Güncelleyin

10. Let's Encrypt sertifikalarını web sitenize eklemek için alan adınız için apache yapılandırma dosyasını açın ve aşağıdaki satırları verilen sertifikaların yolunu yansıtacak şekilde güncelleyin.

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

Şu TLS sertifika satırlarını ekleyin:

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. Son olarak, alan adınızın TLS yapılandırma dosyası için sites-enabled dizinine bir sembolik bağlantı oluşturarak TLS yapılandırma dosyasını etkinleştirin, olası sözdizimi hataları için Apache yapılandırmalarını kontrol edin ve eğer varsa sözdizimi tamamsa, aşağıdaki komutları vererek Apache arka plan programını yeniden başlatın.

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

12. Apache hizmetinin HTTPS bağlantı noktası 443'ü dinleyip dinlemediğini kontrol etmek için, httpd ağ soketlerini listelemek üzere aşağıdaki komutu verin.

sockstat -4 | grep httpd

13. Let's Encrypt sertifikalarının başarıyla uygulandığını doğrulamak için HTTPS protokolü aracılığıyla bir tarayıcıdan alan adı adresinize gidebilirsiniz.

https://www.yourdomain.com

14. Verilen Let's Encrypt sertifikası hakkında komut satırından ekstra bilgi almak için openssl komutunu aşağıdaki gibi kullanın.

openssl s_client -connect www.yourdomain.com:443

15. Aşağıdaki mobil ekran görüntüsünde gösterildiği gibi, bir mobil cihazdan Let's Encrypt CA tarafından sağlanan geçerli bir sertifikayla trafiğin şifrelenip şifrelenmediğini de doğrulayabilirsiniz.

Bu kadar! Sunucu ile istemcinin tarayıcısı arasında akan trafik şifrelendiğinden, istemciler artık web sitenizi güvenli bir şekilde ziyaret edebilir. Certbot yardımcı programına ilişkin daha karmaşık görevler için aşağıdaki bağlantıyı ziyaret edin: https://certbot.eff.org/